Хотя метод .filter()
в ответе @ Domenic - хороший подход, я бы реализовал его немного по-другому.
Пример: http://jsfiddle.net/patrick_dw/mjuyk/
$('input:text').filter(function () {
return !$.trim(this.value);
});
- Вы должны указать
input:text
. В противном случае jQuery должен наблюдать каждый элемент в DOM, чтобы определить, является ли он type='text'
. ( См. Документы. )
- Поскольку это текстовые вводы, использовать
this.value
быстрее, чем $(this).val()
.
- Нет необходимости получать свойство
length
, так как пустая строка - false. Так что просто используйте оператор !
.
Или вы можете использовать обратную .filter()
, то есть метод .not()
:
Пример: http://jsfiddle.net/patrick_dw/mjuyk/1/
$('input:text').not(function () {
return $.trim(this.value);
});
Кроме того, вы можете создать собственный селектор, например:
Пример: http://jsfiddle.net/patrick_dw/mjuyk/2/
$.extend($.expr[':'], {
novalue: function(elem, i, attr){
return !$.trim(elem.value);
}
});
$('input:text:novalue')