【问题标题】:Checking if a jQuery selector doesn't find any results [duplicate]检查jQuery选择器是否找不到任何结果[重复]
【发布时间】:2011-10-31 18:20:11
【问题描述】:

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

if ($$("selector")) {}

检查一个元素是否在 DOM 中。

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

if ( $(selector).length > 0 )

这使得代码更难阅读。

我的问题:最好的方法是什么?我应该使用 .empty() 和 .any() 之类的方法扩展 jQuery 对象,还是有内置函数可以做到这一点?

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

【问题讨论】:

  • 你只需要if ($(selector).length),因为0似乎是假的......
  • 去掉> 0 谓词。这是多余的。

标签: jquery


【解决方案1】:
$.fn.exists = function () {
    return this.length !== 0;
}

像这样使用:

$("#notAnElement").exists();

【讨论】:

  • idk 是否更快或是否重要,但您也可以使用 $.fn.exists = function () { return !!this[0]; }
【解决方案2】:

使用length 是最好的方法。您不应该使用empty()size() > 0,因为这只会在调用堆栈中添加另一个条目。

【讨论】:

  • 使用 if ($(select).length) 效果很好,我忘了我可以省略 > 0!
【解决方案3】:
if ( $(selector)[0] )

这样就可以了。

【讨论】:

    猜你喜欢
    • 2015-07-05
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2011-01-24
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多