我的页面有一个警告框,显示没有要显示的条目。当通过AJAX添加新条目时,我使用简单的
删除此元素$('#empty-alert').remove();
我在想:当我添加以下条目时,我只是再次调用此方法,无论元素是否存在。首先检查存在是否更好,如果存在,请致电remove()
?像:
if($('#empty-alert').length){
$('#empty-alert').remove();
}
或者,当元素存在并且第一个想法已经检查存在并在一次调用中删除时,这只是额外的工作吗?
答案 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/如果您需要执行此操作,我们会告诉您相关信息。