检查jQuery选择器是否找不到任何结果

mic*_*cho 40 jquery

我已经习惯了Prototypejs,如果没有找到任何元素,$$("selector")将返回null.这很方便,因为我能做到

if ($$("selector")) {}
Run Code Online (Sandbox Code Playgroud)

检查元素是否在DOM中.

但是,如果没有找到任何元素,在jQuery $(selector)中将返回[],所以现在我需要这样做:

if ( $(selector).length > 0 )
Run Code Online (Sandbox Code Playgroud)

这使得代码稍微难以阅读.

我的问题:这样做的最佳方法是什么?我应该使用.empty()和.any()等方法扩展jQuery对象,还是内置函数来执行此操作?

更新:这也适用于jQuery上的其他选择器,无论如何,它应该只返回一个结果(如parent()或nearest())

Baz*_*nga 38

$.fn.exists = function () {
    return this.length !== 0;
}
Run Code Online (Sandbox Code Playgroud)

使用如下:

$("#notAnElement").exists();
Run Code Online (Sandbox Code Playgroud)

  • idk如果它更快或更重要,但你可以使用`$ .fn.exists = function(){return !! this [0]; 也是 (3认同)

Chr*_*nte 19

使用length是最好的方法.您不应该使用empty()size() > 0因为它只是向调用堆栈添加另一个条目.

  • 使用if($(select).length)工作得很好,我忘了我可以省略> 0! (7认同)

Jos*_*kle 11

if ( $(selector)[0] )
Run Code Online (Sandbox Code Playgroud)

那就行了.

  • +1短而快! (2认同)