特定のクラス名を持つすべてのドロップダウン選択をループしてアイテムを追加したいのですが、正しいセレクターで苦労しています
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();
}
});
});
新しい質問に答えるには、次の行を使用して、currentComponentName
を含むすべての<option>
を削除します。
$('select.componentSelect option:contains("' + currentComponentName + '")').remove();
。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 を参照してください。
これを試してみてください:
$('select.className').each(function() {
var currentSelect = $(this);
// ... do your thing ;-)
});
次のように、 .className
セレクターを使用する必要があります。
$('select.className')
このセレクターは、 element セレクター(すべての<select>
要素に一致)とclassNameセレクター(className
クラスを含むすべての要素に一致)を組み合わせて、すべての<select>
を検索します。そのクラスの要素。
currentComponentName
を選択のオプションの1つとして定義している限り、投稿されたjQueryコードは私のために機能します。 Aron Rotteveelの答えは非常に近いですが、追加部分が少しずれています。これを試してください。
$('select.componentSelect').each(function() {
$(this).append('<option value="foo">Bar</option>');
});