如何检查jQuery中元素的存在?

我现在的代码是:

if ($(selector).length > 0) {
    // Do something
}

有没有更优雅的方式来处理这个问题?也许是插件或函数?


当前回答

是的最佳方法:

通过JQuery:

if($("selector").length){
   //code in the case
}

选择器可以是元素ID或元素类

OR

如果您不想使用jQuery Library,那么可以通过使用Core JavaScript实现这一点:

通过JavaScript:

if(document.getElementById("ElementID")) {
    //Do something...
}

其他回答

$.contains()是您想要的吗?

jQuery.incontains(容器,已包含)如果第二个参数提供的DOM元素是第一个参数提供DOM元素的后代,则$.contains()方法返回true,无论它是直接子元素还是更深层的嵌套。否则,返回false。仅支持元素节点;如果第二个参数是文本或注释节点,$.contains()将返回false。注意:第一个参数必须是DOM元素,而不是jQuery对象或纯JavaScript对象。

这与所有答案非常相似,但为什么不使用!运算符两次,这样可以得到布尔值:

jQuery.fn.exists = function(){return !!this.length};

if ($(selector).exists()) {
    // the element exists, now what?...
}

检查元素的存在在jQuery官方网站中有完整的文档记录!

使用选择器:if($(“#myDiv”).length){$(“#myDiv”).show();}注意,并不总是需要测试元素是否存在。下面的代码将显示元素(如果存在),并且不做任何操作(无错误)如果没有:$(“#myDiv”).show();

实际上不需要jQuery。使用纯JavaScript,检查以下内容更容易且语义正确:

if(document.getElementById("myElement")) {
    //Do something...
}

如果出于任何原因,您不想在元素中添加id,那么您仍然可以使用任何其他JavaScript方法来访问DOM。

jQuery确实很酷,但不要让纯JavaScript被遗忘。。。

将querySelectorAll与forEach一起使用,无需if和额外赋值:

document.querySelectorAll('.my-element').forEach((element) => {
  element.classList.add('new-class');
});

与以下内容相反:

const myElement = document.querySelector('.my-element');
if (myElement) {
  element.classList.add('new-class');
}