jQuery:使用(document).ready()的正确方法是什么?在.click()和.load()组合中?

时间:2013-10-22 20:59:25

标签: jquery leaflet document-ready

我正在尝试为移动应用创建一个菜单,该应用将我的#content - DIV的内容换成.HTML文件中的新内容。

我正在使用此代码:

$(document).ready(function(){
    $('#menu li').click(function(){
        $('#content').load(this.id + '.html #content *');               
    });
});

除了一个HTML-File:

外,这个工作正常
<div id="content">  
    <div id="map"></div> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="assets/default.js" type="text/javascript"></script> 
    <script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js" type="text/javascript"></script>              
    <script src="assets/map.js" type="text/javascript"></script> 
</div> 

我正在尝试加载由Leaflet-API生成的地图,但是每个浏览器只解析了空的DIV-Container(#map)。

我认为问题可能是在构建DOM后我的map.js没有被触发。 试图用$(document).ready()解决此问题,但不幸的是它不起作用。

有什么建议吗?

会很棒,欢呼!

1 个答案:

答案 0 :(得分:0)

从加载jquery文档中,您可以阅读

脚本执行

  

使用不带后缀选择器表达式的URL调用.load()时,在删除脚本之前将内容传递给.html()。这将在丢弃之前执行脚本块。但是,如果使用附加到URL的选择器表达式调用.load(),则在更新DOM之前会删除脚本,因此不会执行脚本。

你用一个选择器表达式调用load ...

我会以其他方式做。

  1. 修改map.js以包含执行地图内容的函数(即mapInit)。
  2. 将所有这些scrips标记放在一般html文档的头部。
  3. 通过回调地图功能调用加载

    $(document).ready(function(){
      $('#menu li').click(function(){
        $('#content').load(this.id + '.html #content *',mapInit());               
      });
    });