3

我的页面有一个警告框,当没有要显示的条目时显示。当通过 AJAX 添加新条目时,我使用简单的方法删除此元素:

$('#empty-alert').remove();

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

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

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

4

4 回答 4

9

作为参考,根据我的理解,用相当宽松的术语来说:

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

当您调用诸如remove()jQuery 集合之类的函数时,它实际上会遍历集合,对其中的每个元素执行操作。如果集合为空,它将永远不会迭代,因此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
});
于 2012-08-10T08:07:13.433 回答
2

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

在不存在的元素上调用 remove() 不会出错,因此您可以将它与不存在元素的检查一起使用。

于 2012-08-10T08:04:38.597 回答
1

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

于 2012-08-10T08:03:58.350 回答
0

阅读文档http://api.jquery.com/remove/如果你需要做这个检查,他们会告诉你。

于 2012-08-10T08:05:52.767 回答