2012-01-31 45 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/