4

私は、<select>ボタンをクリックすると、ユーザーは次のオプションを選択できます。

$(".someButton").on('click', function () {
   var $opt = $("select :selected");

   $("select").val($opt.next().val());
});

問題は、最後のオプションで、$opt.next().val()選択できない値を返し、明らかにjQueryがデフォルトで最初のオプションを選択することです。私が欲しいのは、それが最後の選択肢にとどまることです。

$optこれを行う方法はありますか(できればの位置や長さをチェックせずに$opt.next())?

4

2 に答える 2

4

これを行うためのより効率的な方法は次のとおりです。

$(".someButton").on('click', function () {
   var el = $("select")[0];
   el.selectedIndex = Math.min(el.selectedIndex + 1, el.length - 1);
});

jQueryに固執する場合は、optionを選択済みに設定します。

$opt.next().prop('selected', true);

$optが最後の場合、.next()は空のセットを返すため、何も変更されません。

于 2013-01-25T15:50:26.330 に答える
1

正直に言うと、私はその事件を処理するだけです。以下を追加するのは簡単です。

if(!$opt.is(':last-child')) {
    $("select").val($opt.next().val());
}
于 2013-01-25T15:47:51.917 に答える