我刚尝试用jQuery的.load方法改变我的页面内容。
虽然内容发生了变化而没有问题,但我发现如果我尝试选择某些东西,jQuery仍然“看到”旧内容,例如:
页:
<div id="mycontentarea">
<div id="myfirstcontent"></div>
<div id="mysecondcontent"></div>
</div>
替换内容:
<div id=mythirdcontent"></div>
<div id=myfourthcontent"></div>
的javascript:
// replace original content
$('#mycontentarea').load('replacement.html');
// print out the id of the first child
console.log($("#mycontentarea").children().attr("id"));
控制台会打印出“myfirstcontent”而不是“mythirdcontent” - 为什么?
答案 0 :(得分:6)
因为load
是异步的,并且在替换发生之前执行了console.log
调用。
将依赖于load
调用结果的任何代码移动到成功完成时执行的回调:
$('#mycontentarea').load('replacement.html', function() {
//Anything in here is executed once the content has been returned successfully
console.log($("#mycontentarea").children().attr("id"));
});
来自load
上的文档:
如果提供“完整”回调,则在之后执行 已经执行了后处理和HTML插入。回调是 为jQuery集合中的每个元素触发一次,然后设置 依次为每个DOM元素。