jquery$(selector).ready()代码即使没有匹配的元素也会运行
jquery $(selector).ready() code running even if no element was matched
我使用此代码仅在某些页面上运行此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不存在,代码仍在运行。
两个控制台日志打印出来:
[]
0
code is running
什么东西?
除了文档之外,您不能对任何内容调用.ready()。在任何其他情况下,您都会得到未定义的行为。
.ready()方法只能在与当前文档匹配的jQuery对象上调用,因此可以省略选择器。
http://api.jquery.com/ready/
除了在文档上,您不能调用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){
可以在选择器上调用ready()
。你只需要这个:https://github.com/Verba/jquery-readyselector
相关文章:
- jQuery在元素的上下文中运行函数
- 在运行时创建元素时移到一边时出错
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 对动态创建的元素运行jQuery.ech()
- 根据特定选项卡中的元素运行 .each()
- 为特定的 DOM 元素运行 setTimeout()
- 如何分别为每个元素运行jQuery幻灯片功能
- 如何获取html元素运行时代码以生成通用副本?就像复制文本框中输入文本一样
- 对具有相同类的多个元素运行一个jQuery函数
- JQuery函数为每个元素运行多次
- Canvas元素运行不正常
- 检测是否插入了元素,并根据元素运行函数
- 使用jQuery对选择器的所有元素运行函数
- 不能对单个元素运行验证
- 对同一个类的每个元素运行一个jQuery,返回undefined
- jQuery触发事件的id的元素运行处理程序定义的类在包含的小枝模板
- jQuery插件,使一个元素环绕另一个元素运行
- 如何使用javascript从一个select元素运行多个函数
- 分别为每个元素运行 jQuery 函数
- 为每个元素运行一个函数