脚本不在动态加载的内容中工作

时间:2017-09-04 18:53:20

标签: javascript jquery

如果发现一些关于jQuery .load(url)的帖子和解雇问题,但我找不到解决方案,或者我不是很了解它们 - 对不起。

到目前为止,这是正确的吗?:

  • .load(url)内容是不是真的加载了DOM?
  • 它需要回拨才能开火?

我的例子:

我有一个" main.php"列表。我从其他php加载列表的内容,其名为" my_list.php"。

" my_list.php"里面有一些jQuery脚本。例如,如果我按下一个链接,将打开一个模态。

所以,如果我直接打开" my_list.php"所有脚本都运行良好。如果我从" my_list.php"加载内容在" main.php"内," my_list.php"内的脚本将不再点击aso。

我像这样加载内容:

$( "#list" ).load( "my_list.php .list_wrapper" );

我找到了解决方案: 您只需为加载的内容添加所需的脚本/函数,如下所示:

$( "#list" ).load( "my_list.php .list_wrapper", function() {
    $.getScript("js/my_scripts_for_the_list.js"); 
});

2 个答案:

答案 0 :(得分:0)

就像jQuery $('#elem').load('/some-page.php')文档说的那样:

  

描述:从服务器加载数据并将返回的HTML放入匹配的元素中。

这意味着 /some-page.php 会发出 GET 请求。该脚本/页面应返回有效的HTML响应。该HTML响应将被注入给定的jquery元素内。该元素将包含检索到的HTML。

很高兴知道:通过.load()请求的页面上通过JS / AJAX创建的任何动态内容都不会执行。只检索服务器端呈现的内容。

如果您在浏览器中访问 /my_list.php 会返回有效的HTML,请尝试使用它:

$("#list").load("my_list.php");

答案 1 :(得分:0)

您的Javascript将从my_list.php执行得很好,只需确保它没有任何html,head,body标签。删除这些标记,只使用div或span。因为在调用load到my_list.php后的当前场景中,您的页面将有多个html,head或body标签,浏览器无法正确呈现这些标签。只需删除html,head和body标签,一切都应该正常工作。我希望这有帮助。 PS:不介意我的英语。