下一个选项 jQuery

4

尝试使用ID标识符选择下一个选项的下拉列表,但无济于事。

这是代码:

$('#chapter option:selected', 'select').removeAttr('selected').next('option').attr('selected', 'selected')

你的标记是什么样子的?在这里,要么 #chapter 要么 'select' 是多余的,意味着你要么想在 所有 选择器上进行更改,要么只想在一个特定的选择器上进行更改。 - mr.b
http://jsfiddle.net/ 是你的好朋友! - Jakub
@Jakub 谢谢你提供的链接,我一定会使用的 ¬_¬ - dbomb101
2个回答

6

我假设#chapter<select>或其祖先元素之一。

如果是这种情况,请删除上下文参数。

$('#chapter option:selected').removeAttr('selected')
              .next('option').attr('selected', 'selected');

您之前的做法实际上是这样的:

您之前的做法实际上是这样的:

$('select').find('#chapter option:selected').removeAttr(...

这段代码是在查找一个位于 <select> 元素内部的带有 option:selected 属性的元素,该元素的父级元素具有 chapter ID。


编辑: 这个答案仅关注为什么选择不起作用。更好的方法是使用@Andy E的答案来完成最终任务。

我建议将那个答案设置为接受的答案。


我知道这是原作者的代码,但是如果您在不同的选项元素上设置selected属性,则无需删除它。 - Andy E
1
@Andy E - 刚回到这个问题。说得好。我更关注为什么选择不起作用。 - user113716

5
除非 <select> 元素具有 multiple 属性,否则在将 <option> 元素添加到其兄弟元素之一时,无需删除选定的属性。 假设 patrick dw's answer 是正确的(因为您已经接受了它),您可以通过将 DOM 返回到其根源来将此代码重构为更高效的代码:
$("#chapter")[0].selectedIndex++;

更不用说你通过缩短代码而节省的宝贵字节了。

1
珍贵的字节。它们很重要 $("#chapter")[0].selectedIndex++ - Raynos
这将是 OP 最终想要实现目标的方法。 - user113716

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接