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

我现在的代码是:

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

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


当前回答

使用jQuery,使用以下语法检查元素是否确实存在。

let oElement = $(".myElementClass");
if(oElement[0]) {
    // Do some jQuery operation here using oElement
}
else {
    // Unable to fetch the object
}

其他回答

在JavaScript中,一切都是“truthy”或“falsy”,对于数字0表示假,其他一切都是真。所以你可以写:

if ($(selector).length)

你不需要那>0部分。

我看到这里的大多数答案都不准确,他们检查了元素长度,在很多情况下都可以,但不是100%,想象一下如果数字传递给函数,所以我原型化了一个函数,它检查所有条件并返回应该的答案:

$.fn.exists = $.fn.exists || function() { 
  return !!(this.length && (this[0] instanceof HTMLDocument || this[0] instanceof HTMLElement)); 
}

这将检查长度和类型,现在您可以这样检查:

$(1980).exists(); //return false
$([1,2,3]).exists(); //return false
$({name: 'stackoverflow', url: 'http://www.stackoverflow.com'}).exists(); //return false
$([{nodeName: 'foo'}]).exists() // returns false
$('div').exists(); //return true
$('.header').exists(); //return true
$(document).exists(); //return true
$('body').exists(); //return true

感谢您分享这个问题。首先,有多种方法可以检查它。如果您想检查DOM中是否存在HTML元素。为此,您可以尝试以下方法。

使用Id选择器:在DOM中按Id选择元素,应该提供以前缀(#)开头的Id名称。您必须确保DOM中的每个Html元素都必须具有唯一的id。使用类选择器:可以使用前缀(.)选择属于特定类的所有元素。

现在,如果您想检查元素是否存在于DOM中,可以使用以下代码检查它。

if($(“#myId”).length){//id选择器} if($(“.myClass”).length){//类别选择器}

如果要检查任何变量是否未定义。您可以使用以下代码进行检查。

让x如果(x)console.log(“X”);其他的console.log(“X未定义”);

尝试测试DOM元素

if (!!$(selector)[0]) // do stuff

不需要jQuery(基本解决方案)

if(document.querySelector('.a-class')) {
  // do something
}

下面的选项性能更高(注意a类前面没有点)。

if(document.getElementsByClassName('a-class')[0]) {
  // do something
}

querySelector在jQuery中使用了一个适当的匹配引擎,比如$()(sizzle),并使用了更多的计算能力,但在99%的情况下都会很好。第二个选项更加明确,并且告诉代码要做什么https://jsbench.me/65l2up3t8i