我有一个<select>
,按下按钮,用户可以选择下一个选项:
$(".someButton").on('click', function () {
var $opt = $("select :selected");
$("select").val($opt.next().val());
});
问题是,在最后一个选项中,$opt.next().val()
返回一些不可选择的值,显然jQuery默认选择 first 选项。我想要的是留在最后一个选项。
有没有办法做到这一点(最好不检查$opt
的位置或$opt.next()
的长度)?
答案 0 :(得分: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()
将返回一个空集,因此不会发生任何变化。
答案 1 :(得分:1)
说实话,我会处理这个案子。添加以下内容会很简单:
if(!$opt.is(':last-child')) {
$("select").val($opt.next().val());
}