2012-01-31 41 views
2

我正在使用此代碼僅在某些頁面上運行此js。

$("body#action_new").ready(function() { 
    console.log($("body#action_new")); 
    console.log($("body#action_new").length); 
    console.log("code is running"); 
} 

即使body#action_new不存在,代碼仍在運行。

兩個console.logs打印出:

[] 
0 
code is running 

是怎麼回事?

回答

7

你不能調用ready除了在文件中,這一翻譯,你可以嘗試

$(document).ready(function(){ 

if($("#action_new").size()>0){ 
     console.log($("body#action_new")); 
     console.log($("body#action_new").length); 
     console.log("code is running"); 
    } 

}); 

正如評論由@Interrobang規定的.size()方法在內部使用.length所以建議使用.length來避免函數調用的額外開銷,所以上面的代碼看起來像

if ($("#action_new").length > 0){ 
+0

「.size()方法在功能上等同於.length屬性;但是,.length屬性是首選,因爲它沒有函數調用的開銷。」 http://api.jquery.com/size/ – Interrobang 2012-01-31 08:35:17

+0

@Interrobang我希望有人會糾正我...... – Rafay 2012-01-31 08:44:03

9

除了文檔之外,您不能調用.ready()。在其他情況下,您將會遇到未定義的行爲。

只能在匹配當前文檔的jQuery對象上調用.ready()方法,因此可以省略選擇器。

http://api.jquery.com/ready/