我习惯于Prototypejs,如果没有找到任何元素,$$(“selector”)将返回null。这很方便,因为我可以做到
if ($$("selector")) {}
检查元素是否在DOM中。
然而,在jQuery $(selector)中如果没有找到元素将返回[],所以现在我需要这样做:
if ( $(selector).length > 0 )
这使得代码稍微难以阅读。
我的问题:这样做的最佳方法是什么?我应该使用.empty()和.any()等方法扩展jQuery对象,还是有内置函数来执行此操作?
更新:这也适用于jQuery上的其他选择器,无论如何,它应该只返回一个结果(如parent()或最接近的())
答案 0 :(得分:38)
$.fn.exists = function () {
return this.length !== 0;
}
用过:
$("#notAnElement").exists();
答案 1 :(得分:17)
使用length
是最好的方法。您不应该使用empty()
或size() > 0
,因为这只会在调用堆栈中添加另一个条目。
答案 2 :(得分:11)
if ( $(selector)[0] )
那就行了。