は、ID識別子を使用してドロップダウンリストの次のオプションを選択しようとしているが、無駄にここ次のオプションのjqueryの
は、私は#chapter
が<select>
またはその祖先の一つであると仮定したコード
$('#chapter option:selected', 'select').removeAttr('selected').next('option').attr('selected', 'selected')
は、ID識別子を使用してドロップダウンリストの次のオプションを選択しようとしているが、無駄にここ次のオプションのjqueryの
は、私は#chapter
が<select>
またはその祖先の一つであると仮定したコード
$('#chapter option:selected', 'select').removeAttr('selected').next('option').attr('selected', 'selected')
です。
この場合、コンテキスト引数を削除してください。
$('#chapter option:selected').removeAttr('selected')
.next('option').attr('selected', 'selected');
あなたはそれを持っていた方法で、あなたはこれを効果的にやっていた。
とelelentから下降option:selected
を持って
<select>
内の要素
を探している $('select').find('#chapter option:selected').removeAttr(...
... chapter
ID。
EDIT:この回答は選択が働いていなかった理由について、単に集中していました。 @Andy E's answerの方法を使用して最終的なタスクを達成する方が良いでしょう。
私は受け入れられた答えとして1つをお勧めします。
OPのオリジナルコードですが、あなたが設定している場合は 'selected'属性を削除する必要はありません別のオプション要素に –
@Andy E - ちょうどこれに戻る。いい視点ね。私は選択がうまくいかなかった理由に焦点を合わせました。 – user113716
<select>
要素が複数属性を持っていない限り、それは、あなたがその兄弟の1にそれを追加しているとき<option>
要素からselected
属性を削除する必要があります。
patrick dw's answerは(そしてあなたがそれを受け入れてきたので、それがある)が正しい、あなたが戻ってそのルーツにDOMを取ることによって、以前よりもずっと効率的な何かにこのコードをリファクタリングしたと仮定すると:
$("#chapter")[0].selectedIndex++;
ないに言及あなたが短いコードで保存している貴重なバイト。
貴重なバイト。彼らは重要です '$("#chapter ")[0] .selectedIndex ++' – Raynos
@Raynos:touché:-) –
+1これはOPが最終的に達成しようとしているものに行く方法です。 – user113716
あなたのマークアップはどのように見えますか? #chapterまたは 'select'のどちらかがここで重複しています。つまり、* all * selectでこれを変更するか、特定のselectでのみ変更します。 –
http://jsfiddle.net/はあなたの友人です! – Jakub
私はちょうど<3 http://jsbin.com –