为什么我不能通过.load()函数加载html?

时间:2014-12-27 14:11:51

标签: javascript jquery

我的代码是:

<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的数量?

1 个答案:

答案 0 :(得分:3)

这是因为.load()是异步的,这意味着当.load()触发了脚本时,您继续执行,从而警告0。 但是当你点击加载很可能已经完成然后你将获得正确的长度。

要解决此问题,请使用您可以提供给load()的回调,该回拨将在通话结束时执行。

$('<div></div>').load('1.html', function(data) {
    alert($("li").length);
});