关于javascript:测试空jQuery选择结果

Test for empty jQuery selection result

说我同意

1
var s = $('#something');

接下来我想测试jQuery是否找到#something,即我想测试s是否为空。

我可以使用我可靠的isempty()

1
2
3
4
5
function isempty(o) {
    for ( var i in o )
        return false;
    return true;
}

或者由于jQuery对象是数组,我想我可以测试s.length

但似乎既不是jQuery的成语,也不是jQueryesque。 你有什么建议?


使用s.length属性。

1
2
3
if(s.length == 0) {
    ...
}

[edit] size()在jquery 1.8中不推荐使用
http://api.jquery.com/size/


1
2
3
4
5
6
if($("#something").length > 0 ){
     // Element found
}
else{
    // No element found
}


更适合我的jQueryesque解决方案是:

1
jQuery.fn.isEmpty = function(fun){ if (this.length === 0) { fun(); } return this; };

这让我以典型的方式写作:

1
$("#sel").fadeOut(500,afterFade).isEmpty(insteadOfFade);

那么扩展jQuery的原型呢?

jQuery.fn.isEmpty = function(){ return !this.length }

然后简单地调用s.isEmpty(),这是非常好看的:

1
2
3
4
5
if(s.isEmpty()) {
   // empty
} else {
   // not empty
}

演示

1
2
3
4
jQuery.fn.isEmpty = function(){ return !this.length }

console.log($('#id').isEmpty());
console.log($('#foo').isEmpty());
1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">