web-dev-qa-db-ja.com

特定のクラス名を持つすべての選択ドロップダウンを取得するための正しいjqueryセレクターは何ですか?

特定のクラス名を持つすべてのドロップダウン選択をループしてアイテムを追加したいのですが、正しいセレクターで苦労しています


EDIT:賛成された受け入れられた回答のほとんどが機能していないように見えるので、私は何か間違ったことをしているに違いありません。以下のHTMLとjqueryコードの両方を貼り付けました。これが理にかなっている場合はお知らせください。


HTML:

<select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();"  class="componentSelect"  id="components0" name="applicationUpdater.dependencies[0].componentName" >
<option value= 5 >Client</option>
<option value= 79 >Server</option>
</select>

 <select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();"  class="componentSelect"  id="components1" name="applicationUpdater.dependencies[0].componentName" >
<option value= 5 >Client</option>
<option value= 79 >Server</option>
</select>

など。 。 。

jqueryコード:

    $('select.componentSelect').each(function() {
        var select = $(this);
        $(select).children('option').each(function() {
            if ($(this).text() == currentComponentName) {
                $(this).remove();
            }
        });

    });
9
leora

新しい質問に答えるには、次の行を使用して、currentComponentNameを含むすべての<option>を削除します。

$('select.componentSelect option:contains("' + currentComponentName + '")').remove();

デモ

7
SLaks

。classセレクターを使用する必要があります

// select every <select> element with classname "yourclassname"
$('select.yourclassname').each(function() {
    // $(this) now refers to one specific <select> element
    // we append an option to it, like you asked for
    $(this).append(
        $('<option value="foo">Bar</option>');
    );
});

JQueryを使用して要素を適切に選択する方法の詳細については、 http://docs.jquery.com/Selectors を参照してください。

12
Aron Rotteveel

これを試してみてください:

$('select.className').each(function() {
   var currentSelect = $(this);
   // ... do your thing ;-)
});
3

次のように、 .className セレクターを使用する必要があります。

$('select.className')

このセレクターは、 element セレクター(すべての<select>要素に一致)とclassNameセレクター(classNameクラスを含むすべての要素に一致)を組み合わせて、すべての<select>を検索します。そのクラスの要素。

1
SLaks

currentComponentNameを選択のオプションの1つとして定義している限り、投稿されたjQueryコードは私のために機能します。 Aron Rotteveelの答えは非常に近いですが、追加部分が少しずれています。これを試してください。

$('select.componentSelect').each(function() { 
    $(this).append('<option value="foo">Bar</option>'); 
}); 
1
rosscj2533