jqueryセレクターの要素が条件を満たすかどうかを確認する簡単な方法はありますか? たとえば、フォーム内のテキストボックスが空かどうかを確認するには (実際の jquery ではなく疑似のようなものです):
$('input.tb').any(val().length == 0);
注: ヘルパー メソッドを使用して実行できることはわかっていますが、1 つのステートメントで実行できるかどうかに興味があります。
jqueryセレクターの要素が条件を満たすかどうかを確認する簡単な方法はありますか? たとえば、フォーム内のテキストボックスが空かどうかを確認するには (実際の jquery ではなく疑似のようなものです):
$('input.tb').any(val().length == 0);
注: ヘルパー メソッドを使用して実行できることはわかっていますが、1 つのステートメントで実行できるかどうかに興味があります。
jQuery には多くの疑似セレクターが組み込まれています: http://api.jquery.com/category/selectors/jquery-selector-extensions/
関数を使用して独自に構築することもできますfilter()
: http://api.jquery.com/filter/
$('input.tb').filter(function() { return this.value.length == 0});
これに出くわした他の人のために、これを1年遅れて追加します。
マルクの答えは、あなたの例の正確な要件を次のように満たします。
$('input.tb').filter(function() { return this.value.length == 0}).length != 0;
これを行うためのもう少し効率的な方法 (条件が早期に満たされた場合、フィルター関数は残りの DOM 要素を反復処理します) は、独自のヘルパー メソッドを作成することです (確かに、op は次のように述べています)。
ヘルパーメソッドで実行できることはわかっていますが、1つのステートメントで可能かどうか知りたいだけです
、しかし、私は自分自身を書くのに2分を節約することを望んでこのページに来ました):
;(function($) {
//iterates over all DOM elements within jQuery object
//and returns true if any value returned from the supplied function is 'truthy'.
//if no truthy values are returned, returns false.
//
//Function( Integer index, Element element )
$.fn.any = function(fn) {
var i=0;
for (;i<this.length;i++) {
if (fn.call(this[i],i,this[i])) {return true;}
}
return false;
}
)(jQuery);
if ( $('input.tb[value=""]').length > 0 ) // there are empty elements