jQuery的.load()总是自动执行脚本吗?

时间:2012-06-14 04:43:20

标签: javascript jquery

我注意到,如果您.load(url)并且网址是包含脚本的网页,则会自动执行这些脚本。有没有办法在没有脚本执行的情况下调用.load(url),然后可能稍后执行它们?即使我在未附加到文档的元素上使用.load(url),它们似乎也会执行。

2 个答案:

答案 0 :(得分:2)

jQuery的load()检查script块并执行它们(通过其DOM操作帮助程序代码)。

您可以使用$.ajax()请求页面,然后使用html()方法设置HTML - 不要使用append(),因为它也会执行script

答案 1 :(得分:2)

我相信你可以使用.get()http://api.jquery.com/jQuery.get/

例如:

$.get('test.html', function(data) {
  // HTML text is now in data variable
  // If we use .html() the scripts are then executed.
  $('.result').html(data);
});

另外,来自.load()文档(http://api.jquery.com/load/):

  

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