2012-09-06 244 views
1

jQuery沒有找到任何元素。 alert($("#testbutton").length);每次顯示0。jQuery沒有找到元素

我做錯了什麼?

我JS/jQuery代碼:

(function ($) { 
    alert($("#testbutton").length); 
}) (jQuery); 

我的HTML:

<html> 
    <body> 
     <div id="header"> 
      <div class="button" id="testbutton">Test</div> 
     </div> 
    </body>  
</html> 
+0

是jQuery在你的腦海中? –

+0

您的代碼只能在小提琴中找到。 http://jsfiddle.net/2CX2y/ –

回答

5

當你的代碼運行的DOM還沒有準備好,因此元素不存在。您是不是要做到這一點,而不是(傳遞給jQuery的一個功能是$(document).ready(fn)快捷方式):

$(function() { 
    alert($("#testbutton").length); 
}); 
+0

(function($){ })(jQuery);相當於$(function(){}); –

+2

@InternalServerError - 不,它不是。它只是一個立即執行的函數表達式,它傳遞給'jQuery'對象。第二個是完全不同的 - 將一個函數傳遞給jQuery。 –

+2

我不相信是這樣;第一種是簡單地將'jQuery'變量傳遞給被執行的函數的IIFE;第二個是'$(document).ready(function(){});' – jackwanders

0

調用它的文件準備好,你可以在這裏看到:http://jsfiddle.net/SwQUH/

$(document).ready(function() { 
    alert($("#testbutton").length); 
}); 

如果你只需要調用就像那樣,DOM不是「準備好」的,HTML元素還不存在。

0

嘗試以下

<script type="text/javascript"> 

而首先確保thers裝載jQuery的

沒有錯誤顯示提醒信息,對DOM的負載,並檢查是否一切都很好。

1

如果您在使用寫jQuery腳本在頭:

(function() { 

    ... 

})(); 

這是行不通的,因爲它可以加載體頁面的內容之前執行腳本。

用途:

$(document).ready(function() { 

    ... 

}); 

或頁腳移動你的腳本。