Javascript 是否值得先检查元素是否存在?
背景:我正在建立一个偏好 使用html本地存储的系统 API(带有php会话回退)。如果您喜欢的项目位于 第页,使用js添加类“收藏夹”Javascript 是否值得先检查元素是否存在?,javascript,jquery,html,local-storage,Javascript,Jquery,Html,Local Storage,背景:我正在建立一个偏好 使用html本地存储的系统 API(带有php会话回退)。如果您喜欢的项目位于 第页,使用js添加类“收藏夹” 如果我不知道元素id是否会出现在页面上。最好先检查它是否存在,还是jQuery返回的false同样有效?无论哪种方式,您总是要执行$()。因此,保留一个引用该方法结果的变量,通过检查它是否存在,效率将不会有损失(或高度可忽略的损失)。很可能不是。如果jQuery找不到匹配项,它将没有什么可枚举的,只会继续。换句话说,像这样的事情是不必要的: var $favo
如果我不知道元素id是否会出现在页面上。最好先检查它是否存在,还是jQuery返回的
false
同样有效?无论哪种方式,您总是要执行$()
。因此,保留一个引用该方法结果的变量,通过检查它是否存在,效率将不会有损失(或高度可忽略的损失)。很可能不是。如果jQuery找不到匹配项,它将没有什么可枚举的,只会继续。换句话说,像这样的事情是不必要的:
var $favorite = $("#favorite");
if ($favorite.length) { // Test whether it exists
$favorite.doSomething();
}
最好写为:
$("#favorite").doSomething();
有类似情况的测试代码 VS
$('#item_123').remove(); //this turned out slower for me in chrome 13
你怎么检查“页面上是否有你喜欢的项目”?嗯,在Chrome12中我的速度更快了。另外,.在测试中,没有匹配的元素,因此
$('#item_123').remove()第一个示例中的代码>从不运行。因此,您所做的只是比较$('#item_123')。length==1
到$('#item_123')。remove()代码>。因此,是的,访问.length
属性可能会比调用.remove()
方法性能更好。感谢您向我发送jsperf的指导
$('#item_123').remove(); //this turned out slower for me in chrome 13