Javascript .val在选择时具有无效值

Javascript .val在选择时具有无效值,javascript,jquery,Javascript,Jquery,我有一个,点击按钮,用户可以选择下一个选项: $(".someButton").on('click', function () { var $opt = $("select :selected"); $("select").val($opt.next().val()); }); 问题是在最后一个选项上,$opt.next().val()返回一些不可选择的值,显然jQuery默认选择第一个选项。我想让它留在最后一个选项上 有没有办法做到这一点(最好不检查$opt的位置或$opt.n

我有一个
,点击按钮,用户可以选择下一个选项:

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

   $("select").val($opt.next().val());
});
问题是在最后一个选项上,
$opt.next().val()
返回一些不可选择的值,显然jQuery默认选择第一个选项。我想让它留在最后一个选项上


有没有办法做到这一点(最好不检查
$opt
的位置或
$opt.next()
)的长度?

老实说,我会处理这个案子。添加以下内容很简单:

if(!$opt.is(':last-child')) {
    $("select").val($opt.next().val());
}

以下是一种更有效的方法:

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

如果要坚持使用jQuery,请将
选项设置为选中:

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

如果
$opt
是最后一个,
.next()
将返回一个空集,因此不会有任何更改。

您真的需要依赖该值吗?如果不是,那么使用
$(“选择选项:已选择”).next().prop(“已选择”,true)
来代替呢?@pimvdb Joseph Silber偷了你的答案(可能不是故意的),但是如果你回答这个问题,我会接受它。他们真的不需要重新选择最后一个值,所以可能类似于
如果(!$opt.is(“:last child”){$(“选择”).val($opt.next().val());}
就是这样。是的,我不确定它是否会影响多个选择,这就是我这样写的原因,不过我会更新答案