2014-12-27 24 views
0

我的代碼是:爲什麼我無法獲得通過.load()函數加載的html?

<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

您是否閱讀過文檔,'load'爲您自動插入內容,它看起來像是您真的想使用'$ .get'代替。 – adeneo 2014-12-27 14:13:18

回答

3

這是因爲​​是異步的,這意味着當​​已經觸發腳本時,您將繼續執行以提示0。 但是當你點擊加載最有可能完成,然後你會得到正確的長度。

要解決此問題,請使用您可以提供給load()的回調函數,該函數在調用完成後執行。

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

現在我有另一個問題。如果有五個html文件,0.html,1.html,...,4.html,那麼當所有這些文件被加載時,如何獲得lis的編號? – user3077147 2014-12-28 02:26:18

相關問題