获取当前选中的选项
在上述内容中,出现了一个问题(Get current selected option)以及相关的讨论。问题是如何获取当前选择的选项,即获取被选中选项的ID。下面是问题出现的原因以及解决方法:
原因:
问题的原因是需要在选择框的选项改变时获取当前选中的选项的ID。在给选择框绑定了change事件后,通过使用jQuery的find方法来查找被选中选项的ID。
解决方法:
通过使用jQuery的change方法来绑定选择框的change事件,然后使用find方法来查找被选中选项的ID。下面是解决方法的代码:
$('#sel').change(function(){ alert($(this).find('option:selected').attr('id')); });
这个方法可以正常工作,但是有人认为这种方法比起Esailia的答案来说并不好。因为这种方法类似于走一条风景线,不够简洁美观。
有人认为Esailia的答案更好,因为它更容易理解,特别适合熟悉jQuery的开发者。而且问题本身也提到了jQuery。但是也有人认为这种方法不好,因为它使用了不必要的抽象层级,直接使用原生JS代码会更清晰。
有人问为什么这种方法比Esailija的方法更差,但是没有给出非挑衅性的理由。实际上,Esailija的方法性能更好,因为this.onchange
已经更新了this.selectedIndex
。而使用find方法则需要对整个元素树进行查询,虽然范围很小,但是还是会影响性能。
Esailija的方法更好,因为首先应该给出原生JS的解决方法,其次在这个案例中,原生JS的性能更好。
问题的原因是HTML中的
以下是解决方法的代码示例:
DEMO: [http://jsfiddle.net/yPYL5/](http://jsfiddle.net/yPYL5/)
有人误解了问题,认为OP想要获取选项对象(id属性),而不是值。实际上,OP想要根据选中的选项获取1、2或3的值。正确的做法是给
有人建议更改HTML代码,但这并不能解决OP的问题。更正的方式是教会OP正确的做法,而不是使用错误的方法来解决问题。
有人认为你的解决方案假设OP想要获取选项的value属性,但实际上OP已经在其他地方使用了value属性,所以这并不是一个好的解决方法。因此,最好的做法是回答问题,而不是暗示OP不知道自己在做什么。
问题中的示例代码过于简化,并且包含无效的HTML结构。OP也没有提供足够的细节,导致误解了问题。