2016-09-19 5 views
1

私は基本的に複数の条件をチェックする条件文である次のコードを持っています。条件文私の要素のチェックのみjQuery

これは、クラスが.input-bravoの要素をチェックして値があるかどうかを調べ、クラスの値がis-validかどうかを調べるためのものです。

$('#step-1-btn').click(function() { 
    if($('.form-step-1 .input--bravo').val() && $('.form-step-1 .input--bravo').hasClass('is-valid')) { 
    alert('This worked') 
    } 
    else { 
    alert('This did not work'); 
    } 
}); 

私はこれを持っています問題はそれだけで.input-bravoを持つ要素の一つをチェックしてから渡すべきではありませんしていない、そのクラスでさえも知られている他の要素を渡すということです。私のページでこれらの要素をすべてチェックするにはどうしたらいいですか?

おかげで、すべての要素が、そのクラスを持っている場合ニック

+2

反復: '$(」フォーム-ステップ-1 .input - ブラボー。 ').each(function(){....}); ' –

+1

何らかのループが必要です。 1回の操作ですべての結果をどのように使用できますか? –

+0

@cale_bなぜこれを実際の回答として書きませんか? – Soviut

答えて

4

を確認するには、各要素を超える値

var elems = $('.form-step-1 .input--bravo'); 

var filtered = elems.filter(function() { 
    return $(this).hasClass('is-valid') && this.value !== ""; 
}); 

if (elems.length === filtered.length) {... 
+0

'.filter()'は私にいくつかの文書を読むようにさせました。クールに見える:D – cjmling

+0

簡単な質問: '$(this).val()'ではなく 'this.value'をなぜ使うのですか?パフォーマンスの大幅な向上はありますか?私はパフォーマンスを最適化するのが好きですが、コードの一貫性を考慮したいので、自分のような専門家から学びたいと思っています! –

+1

@cale_b - jQueryで 'this'をラップすることはパフォーマンス上の賢明さに気づくことはなく、' value'プロパティを取得することに反対する 'val()'も呼び出さないでしょう。しかし、両方の文字を書き込むのにほぼ同じ時間と量の文字が必要なので、私は 'this.value'を2つの関数呼び出しを保存するだけで読みやすくするために使いたいと思います。 – adeneo