javascript - 你需要检查 jQuery 对象是否存在吗?

标签 javascript jquery

假设您有一个 100 个页面的网站,并且有一个 id 为 #unique-div 的 div 仅出现在 page-5.html 中,但不会出现在其他 99 个页面中,示例更加简单你有一个在所有页面上加载的 JS 文件,里面有这样的内容:

var uniqueDiv = $('#unique-div');

uniqueDiv.addClass('random-class');

这是否会以任何可能的方式产生任何负面影响(例如性能)?最好先检查一下长度吗?

var uniqueDiv = $('#unique-div');
if ( uniqueDiv.length ) {
    uniqueDiv.addClass('random-class');
}

如果是这样,为什么?

或者如果你像这样链接对象呢:

var uniqueDiv = $('#unique-div');

someVar.add(moreVars).add(uniqueDiv).addClass('random-class');

如果该对象不存在,会发生什么?

我尝试查找此内容,但我一直想知道这一点。

最佳答案

任何 jQuery 方法都有责任具有“正确”的行为,无论调用它们的当前 jQuery 对象中有 0 个、1 个或多于 1 个 DOM 对象。因此,只要您不使用一些损坏的 jQuery 插件方法,您就不必在调用方法之前测试长度,这包括您使用链接的情况。

因此,就您而言,即使您不知道 #unique-div 是否实际存在,这也完全没问题:

$('#unique-div').addClass('random-class');

如果 div 不存在,则 .addClass() 方法将不执行任何操作。

注意:一些检索值的方法(例如 .val())被编码为仅对 jQuery 对象中的第一个 DOM 元素进行操作,您必须使用单独的方法进行检查,例如如果 jQuery 对象中没有 DOM 对象,它们将返回什么内容。例如,当 jQuery 对象中没有 DOM 对象时,.val() 将返回 undefined

关于javascript - 你需要检查 jQuery 对象是否存在吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23346867/

相关文章:

javascript - Youtube 可以很好地与 Turbolinks 一起玩吗?

javascript - Date.js getWeek() 在实现 Extjs 后停止工作

javascript - 使用样式规则编写 Jquery 插件的正确方法

javascript - 使用原型(prototype)继承模式的随机移动动画

javascript - 找到 div 的值,然后将该数值加上另一个 div

javascript - 匹配特殊字符和数字的正则表达式

javascript - 我想根据属性键值对从对象返回的项目进行排序,然后为界面中的每个项目分配排名(1,2,3...等)

javascript - 我应该在什么时候或在什么情况下使 jQuery 中的对象无效?

javascript - 从函数 jquery 内的函数获取值

php 字符串到 javascript 代码用逗号除了最后一个字符串