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

Jquery 在删除某个元素之前检查它的存在是否更好?,jquery,Jquery,“我的页面”有一个警报框,当没有可显示的条目时显示。当通过AJAX添加新条目时,我会使用一个简单的方法删除此元素: $('#empty-alert').remove(); 我在想:当我添加以下条目时,我只需再次调用此方法,而不管元素是否存在。最好先检查是否存在,如果存在,请调用remove()?比如: if($('#empty-alert').length){ $('#empty-alert').remove(); } 或者,当元素确实存在并且第一个想法是在一次调用中检查是否存在并删

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

$('#empty-alert').remove();
我在想:当我添加以下条目时,我只需再次调用此方法,而不管元素是否存在。最好先检查是否存在,如果存在,请调用
remove()
?比如:

if($('#empty-alert').length){
    $('#empty-alert').remove();
}
或者,当元素确实存在并且第一个想法是在一次调用中检查是否存在并删除时,这只是额外的工作吗?

查看此小提琴,在删除元素时,无需事先检查元素是否存在。如果缺少元素,则不会引发错误

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


对不存在的元素调用remove()不会产生错误,因此您可以将其与非元素存在检查一起使用。

如果需要执行此检查,请阅读文档,文档中会告诉您相关信息。

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

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

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

例如,使用此案例:

$(“#空警报”)
将返回
[“#空警报jQuery对象”]
[]
(空数组)的集合

调用.remove()实际上是在幕后执行以下操作:

//jqCollection is one of the arrays previously mentioned

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

如果要执行第二个选项,则应输入
$(“#空警报”)的结果
插入一个变量,然后使用该变量检查长度并删除。感谢您的解释和幕后外观的加分:)听起来,额外的检查确实会——正如我所想——触发不必要的存在查找。谢谢,但我不想知道我是否需要检查,是否有用或只是额外的工作。