2017-12-27 5 views
1

selectsをちょうど4 optionsにする最短の方法は何ですか?すべての目に見える選択肢を正確に4つのオプションで探す

そうでなければ、私はループの各selectに持っていると$find('option').length == 4

を取得しますこれは動作していないようです:

$.grep($("select:visible"), function() { 
    return $(this).find('option').length == 4; 
}); 
+0

クラスの作成(/ opt4)の作成方法について教えてください。あなたはクラスセレクタを使うことができます –

+0

@mike_tああ、拡張子が – user5858

+0

になって申し訳ありません['.has()'](http://api.jquery.com/has/)メソッドを試しましたか? – agrm

答えて

3

あなたは:has():eq():not()セレクタの組み合わせを使用することができます。

表現:has(option:eq(3))は5 option子を持つ要素を除外します4 option ALT-LEST子要素と表現:not(:has(option:eq(4)))を持つ要素をターゲットとします。

$("select:visible:has(option:eq(3)):not(:has(option:eq(4)))").css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
</select> 
 
<select> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
</select> 
 
<select> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
    <option>5</option> 
 
</select>


また、あなたのコードはまた、あなたのをラップする必要がありますされ、正しい唯一の問題である.filter()

$("select:visible").filter(function() { 
 
    return $(this).find('option').length == 4; 
 
}).css('color', 'red')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
</select> 
 
<select> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
</select> 
 
<select> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
    <option>5</option> 
 
</select>

0

を使用することができます$ .find関数を動作させるためのいくつかの要素を持つ要素を選択します。 例:

//Going to add a div to wrap all elememts  
var myDiv = $("<div><select><option>1</option><option>2</option><option>3</option></select><select><option>1</option><option>2</option><option>3</option><option>4</option></select><select><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option></select><div>"); 
$.grep(myDiv.find("select"),(el)=>$(el).find("option").length===4); 
関連する問題