2011-08-16 4 views
5

<option>の要素が含まれている場合は、<select>要素を選択するCSSセレクタが必要です(どちらも自分の要件に一致します)。例HTML:<select>と指定されたCSSセレクタ<option>ラベル

<select name="foo"> 
    <option value="1">First</option> 
    <option value="2">Second</option> 
</select> 

それは例えば、「第二」と表示されたオプションが含まれている場合、私は<select>をしたいです。

select[option:contains('Second')] 

CSSセレクタでこれを達成する方法がない場合は、JQueryまたはXPathセレクタも使用できます。

+2

要素で何をしたいですか?ブラウザーは、 'SELECT'要素のスタイリングに関しては非常に限られています。 –

+0

このアプローチをSeleniumメソッドと組み合わせて、相互作用するフォーム要素を自動的に見つけたいと思っています。 – Alp

答えて

8

CSSでこれを行うことはできません。

あなたは(:has():contains()は、CSSの一部ではない)、このjQueryのセレクタを使用することができ、次のいずれか

$("select:has(option:contains('Second'))") 

またはこのXPath式:

//select[contains(option, 'Second')] 
+0

ありがとう、完全でシンプルな回答 – Alp

+0

には、残念ながらサブストリングが一致しています。値を正確に一致させる必要があります。 – ladieu

+0

@ladieu: '// select [option = 'Second']' jQueryを使用している場合は、値をテストするためにコールバックを手動で記述する必要があります。 – BoltClock

3
$('select[name="foo"] option:contains("Second")').parent().addClass('selected'); 

多分これは

を助けることができます
2

これを行う最も簡単な方法は、セレクタを使用することです含まれていない属性http://jsfiddle.net/8Tn4Z/

と値を持つバージョン:オプションここで

$("select option:contains('Second')") 

に取り組んだ例http://jsfiddle.net/8Tn4Z/1/

実際のselect要素自体を取得するには、単に上parent()メソッドを使用することができます上記のコードは次のようになります。

var selectElement = $("select option:contains('Second')").parent(); 

例:http://jsfiddle.net/8Tn4Z/2/

+0

* -cough- * 'select'を選択する必要があります。 – BoltClock

+0

ダニエルありがとう!ピー! –

関連する問題