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

我现在的代码是:

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

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


当前回答

试试这个。

简单、简短,可在整个项目中使用:

jQuery.fn.exists=function(){return !!this[0];}; //jQuery Plugin

用法:

console.log($("element-selector").exists());

_________________________________

或更短:(当您不想定义jQuery插件时):

if(!!$("elem-selector")[0]) ...;

甚至

if($("elem-selector")[0]) ...;

其他回答

对于jQuery,您不需要>0,这就是您所需要的:

if ($(selector).length)

使用vanilla JS,您可以使用:

if(document.querySelector(selector))

如果要将其转换为返回bool的函数:

const exists = selector => !!document.querySelector(selector);

if(exists(selector)){
  // some code
}

只需检查选择器的长度,如果它大于0,则返回true,否则返回false。

对于ID:

 if( $('#selector').length )         // use this if you are using id to check
{
     // it exists
}

对于类别:

 if( $('.selector').length )         // use this if you are using class to check
{
     // it exists
}

对于下拉列表:

if( $('#selector option').size() ) {   // use this if you are using dropdown size to check

   // it exists
}

Yes!

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

if ($(selector).exists()) {
    // Do something
}

这是对杰夫·阿特伍德主持的《放牧守则》播客的回应

您可以通过以下方式节省几个字节:

if ($(selector)[0]) { ... }

这是因为每个jQuery对象也伪装成一个数组,所以我们可以使用数组解引用运算符从数组中获取第一个项。如果指定索引中没有项,则返回undefined。

您可以使用此选项:

// if element exists
if($('selector').length){ /* do something */ }

// if element does not exist
if(!$('selector').length){ /* do something */ }