Javascript 获取当前选定的选项

Javascript 获取当前选定的选项,javascript,jquery,html,Javascript,Jquery,Html,现场: 如何获取当前选定的选项ID?现在始终显示id=1。将id属性更改为value,然后使用 标记应该有一个value属性。选择一个后,使用$sel.val获取其值 演示:$this.find'option:selected'.attr'id' 应该有用 要在选择元素中获取选定选项,可以使用selectedIndex,然后使用options数组获取选定选项对象 $("#sel").change(function(){ alert( this.options[this.selectedIn

现场:


如何获取当前选定的选项ID?现在始终显示id=1。

将id属性更改为value,然后使用

标记应该有一个value属性。选择一个后,使用$sel.val获取其值

演示:

$this.find'option:selected'.attr'id'

应该有用

要在选择元素中获取选定选项,可以使用selectedIndex,然后使用options数组获取选定选项对象

$("#sel").change(function(){
   alert( this.options[this.selectedIndex].id );
})

jquery:selected过滤器会工作吗。 像这样的

$("#sel").change(function(){
   alert( this.options[this.selectedIndex].id )
})
试试这个

$("#sel:selected").each(function(){
   alert($(this).attr('id'))
})
理想情况下,您应该为选项标记使用value属性,并且只使用val方法从下拉元素中获取所选值$塞尔瓦尔

试试这个:

$("#sel").find('option:selected').attr('id');


这不会给你id,它会给你:aa,bb或CCA谢谢你指出明显的id和值。我更新了我的答案。这仍然不是要求的,你不能更改HTML。OP确实需要访问select@Rocket:因为你绕过了OP想要解决的问题。你不知道HTML可以是changed@Rocket:在查看了您的两个答案jrummel之后,我同意OP应该使用此HTML。这是一条模糊的线,无论是回答字面上的问题,还是建议一个更好的方法…OP不是询问所选对象的值。看起来OP真正想要的是选项对象及其idattribute@JuanMendes:嗯?根据选择的选项,OP want为1、2或3。这就是代码的作用。标签应该有一个用于此目的的值。HTML和JavaScript都不正确。对不起,我没有注意到你用值交换了id。。。建议他们更改HTML并不能教会OP问题的真正含义。。。尽管这可能是最好的解决办法。@JuanMendes:我在教他们正确的解决办法。我不想用错误的方式向OP展示。最好是用正确的方法来做,然后试着采取变通办法来解决错误的方法所产生的问题。你的解决方案假设他们想要的是选项的值属性。人们通常简化问题,使之更容易回答。然而,OP也提到他已经将价值用于其他事情,所以这不是一个很好的解决方案。这就是为什么我通常更愿意回答这个问题,而不是暗示OP不知道他们在做什么。你的选项上使用ID属性而不是值属性有什么原因吗?仅供参考:以数字开头或是数字是无效的。我也使用值,但对于这个例子,我只显示了ID。@MarkFondy:你应该在问题中添加这个。它会在这里的评论中保存一个参数。很好的答案:回答了问题,但解释了一个更好的方法。应该是$sel选项:已选择,但这是浪费,因为您已经在handler中引用了select元素,任何自尊的开发人员都不应该选择此方法。这有点像风景线,只是它看起来不漂亮。@Jakub:这有点刺耳,我也喜欢Esailia的答案,因为它和我的答案一样,但如果你是一个有jQuery想法的开发人员,并且这个问题确实提到jQuery,这可能会被认为更容易理解。我不是jQuery开发人员,我不喜欢程序性jQuery代码,所以我不会使用它,因为它有一个不必要的抽象级别,因为直接的JS代码更清晰。JuanMendes&AndyE,这就是为什么如果你们不喜欢我的答案,你们必须投反对票。不必过于挑剔。@AndeE,你有没有任何非抱怨的理由来解释为什么这比Esailija的答案更糟糕?这是有意义的,并以一种简单、自我记录、循序渐进的方式解释了事情,而Esailija的答案并不明显,需要一段长时间的评论来准确解释它的作用,以澄清为什么Esailija的答案表现得更好:This.onchange已经更新了This.selectedIndex。通过使用find,您可以对树的一小部分进行查询,当然它依赖于jQuery内部。
$("#sel").change(function(){
   alert( this.options[this.selectedIndex].id );
})
$("#sel").change(function(){
   alert( this.options[this.selectedIndex].id )
})
$("#sel:selected").each(function(){
   alert($(this).attr('id'))
})
$("#sel").find('option:selected').attr('id');
$('select:#idSelect').val()