Тест для пустого результата выбора jQuery


скажи, что да

var s = $('#something');

и затем я хочу проверить, если jQuery нашли что-то, т. е. я хочу проверить, если s пусто.

я мог бы использовать мой верный isempty() на:

function isempty(o) {
    for ( var i in o )
        return false;
    return true;
}

или поскольку объекты jQuery являются массивами, я полагаю, что я мог бы проверить s.length.

но ни один из них не кажется вполне в идиоме jQuery, не очень jQueryesque. Что ты предлагаешь?

4 73

4 ответа:

используйте свойство s. length.

if(s.length == 0) {
    ...
}

[edit] size () устарел в jquery 1.8 http://api.jquery.com/size/

if($("#something").length > 0 ){
     // Element found
}
else{
    // No element found
}

а как же расширения прототип jQuery?

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

тогда просто позвоните s.isEmpty() что довольно приятно читать:

if(s.isEmpty()) {
   // empty
} else {
   // not empty
}

демо

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

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

<div id="foo"></div>

еще более jQueryesque решение для меня:

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

Это позволяет мне писать в типичной манере:

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