1

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

我正在使用这段代码:

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

这有效,除了一个 HTML 文件:

<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 生成的地图,但#map每个浏览器都只解析了空的 DIV-Container ()。

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

有什么建议么?

会很棒,干杯!

4

1 回答 1

0

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

脚本执行

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

您正在使用选择器表达式调用 load ...

我会以其他方式做。

  1. 修改您的 map.js 以包含一个执行地图内容的函数(即 mapInit )。
  2. 将所有这些 scrips 标签放在通用 html 文档的头部。
  3. 使用地图函数回调调用 load

    $(document).ready(function(){
      $('#menu li').click(function(){
        $('#content').load(this.id + '.html #content *',mapInit());               
      });
    });
    
于 2013-10-23T08:49:10.950 回答