这是我使用$ .load()加载到DOM中的文件:
<script type="text/javascript">
$('.close').click(function() { alert(1) });
</script>
<div class="close">
click me
</div>
说,在我看来<script>
部分会在加载时自动延迟,这是$ .load()的一个功能吗?
如果是的话,该如何实施?
感觉很棒!
答案 0 :(得分:9)
我已经阅读了jQuery源代码,这就是我发现的内容:
(行号引用未压缩的jQuery 1.3.2)
jQuery.load
最终得到响应并调用jQuery html
方法并将结果插入其中。 (第3267行) jQuery.html
然后调用jQuery append
方法。 (第488行) jQuery.append
然后使用插入DOM节点的回调函数调用domManip
方法。 (第253行) domManip
(第514行)有点棘手,但最终确实将DOM节点传递给要插入的回调,然后调用evalScript
每个脚本在之后插入DOM节点,无论它们在加载的html中的顺序如何。 (第526行)。因此,jQuery确实以延迟的方式执行脚本!
使用来源,Luke。
答案 1 :(得分:0)
“如果您直接使用浏览器访问该文件(单击它时没有警报),脚本将无法按预期工作。但是如果您使用$ .load()将其加载到另一个页面,它将起作用(点击时发出警报。 - 岸“
当您在浏览器中加载文件时,单击它时没有警报的原因是因为当浏览器读取“$('.close')...
”行时,没有类“{{1}”的DOM对象“但是,因为它来自脚本标记。
您可以通过以下方式解决此问题:
close
至于延迟部分,因为当你使用$ .load()时,函数首先加载文件,然后将源放入DOM对象。将source放入DOM对象后,它将解析文件中的$(document).ready(function(){$('.close').click(function() { alert(1) });});
标记。这就是为什么您的点击事件已成功绑定到具有类<script>