在删除元素之前检查元素的存在是否更好?

时间:2012-08-10 08:01:26

标签: jquery

我的页面有一个警告框,显示没有要显示的条目。当通过AJAX添加新条目时,我使用简单的

删除此元素
$('#empty-alert').remove();

我在想:当我添加以下条目时,我只是再次调用此方法,无论元素是否存在。首先检查存在是否更好,如果存在,请致电remove()?像:

if($('#empty-alert').length){
    $('#empty-alert').remove();
}

或者,当元素存在并且第一个想法已经检查存在并在一次调用中删除时,这只是额外的工作吗?

4 个答案:

答案 0 :(得分:9)

作为参考,我的理解相当松散:

jQuery中的$()选择器总是返回一个jQuery集合。如果没有匹配元素,则该集合为空。

当你在jQuery集合上调用诸如remove()之类的函数时,它实际上遍历集合,对其中的每个元素执行操作。如果集合为空,它将永远不会迭代,因此在这种情况下永远不会在任何元素上调用remove()

例如,使用这种情况:

$('#empty-alert')将返回["#empty-alert jQuery object"][](空数组)的集合;

调用.remove()实际上是在幕后做这样的事情:

//jqCollection is one of the arrays previously mentioned

jqCollection.each(function(){
    this.remove(); //'this' is a single jQuery object from the jqcollection
});

答案 1 :(得分:2)

  

或者,当元素存在并且第一个想法已经检查存在并在一次调用中删除时,这只是额外的工作吗?

在非现有元素上调用remove()不会产生错误,因此您可以在不存在元素存在的情况下使用它。

答案 2 :(得分:1)

看一下这个小提琴http://jsfiddle.net/knFK4/1/,删除它时不需要先检查元素是否存在。如果元素缺失,则不会引发错误

答案 3 :(得分:0)

阅读文档http://api.jquery.com/remove/如果您需要执行此操作,我们会告诉您相关信息。