Test for empty jQuery selection result
说我同意
1 | var s = $('#something'); |
接下来我想测试jQuery是否找到#something,即我想测试
我可以使用我可靠的
1 2 3 4 5 | function isempty(o) { for ( var i in o ) return false; return true; } |
或者由于jQuery对象是数组,我想我可以测试
但似乎既不是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的原型呢?
然后简单地调用
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"> |