我的代码是:
<body>
<div id="main"></div>
<button>click me</button>
<script type="text/javascript">
$("<div></div>").load("1.html").appendTo($("#main"));
alert($("li").length);
$("button").click(function() {
alert($("li").length);
});
</script>
</body>
和1.html:
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
</ul>
首先它会提醒0;但是当我点击按钮时,它会发出警告5.为什么? 如何在第一个警报窗口获取li的数量?
答案 0 :(得分:3)
这是因为.load()
是异步的,这意味着当.load()
触发了脚本时,您继续执行,从而警告0
。
但是当你点击加载很可能已经完成然后你将获得正确的长度。
要解决此问题,请使用您可以提供给load()
的回调,该回拨将在通话结束时执行。
$('<div></div>').load('1.html', function(data) {
alert($("li").length);
});