假设您有一个 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/