我正在使用此代码仅在某些页面上运行此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
是什么给出了?
答案 0 :(得分:9)
除了文档之外,您无法调用.ready()。在任何其他情况下,您将获得未定义的行为。
.ready()方法只能在与当前文档匹配的jQuery对象上调用,因此可以省略选择器。
答案 1 :(得分: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){
答案 2 :(得分:1)
可以在选择器上调用ready()
。您只需要:https://github.com/Verba/jquery-readyselector