我面临一个非常奇怪的问题,其中jQuery:selected总是返回相同的值。
举个例子,假设我有这个HTML:
<select class="some_select">
<option value="0">Zero</option>
<option value="1">One</option>
</select>
然后我在$(document).ready():
上运行这个jQuery代码 $('.some_select').change(function() {
alert($(this).attr('value'));
});
在上面的情况中,警报始终显示所选选项的良好值,但如果我运行此:
var type = $('.some_select :selected').attr('value');
使用此代码,无论选择何种选项,警报始终返回“0”。
我也尝试过:
$('.some_select').find(':selected')
和
$('.some_select').filter(':selected')
也
$('.some_select option:selected')
先谢谢你的帮助!
答案 0 :(得分:1)
我要点评Explosion Pills评论。您正在寻找的代码是
$('.some_select').change(function() {
console.log($(":selected").attr('value'));
});
答案 1 :(得分:0)
这是因为你需要.change(function(){..})
所以它可以在更改时更新值,当更改值时,你没有更新代码的其他代码片段。或者我误解了什么?
答案 2 :(得分:0)
select元素没有value
属性,因此警告$(this).attr('value')
会提醒undefined
,而不是所声明的所选选项的“正常价值”。
您不需要在此处使用:selected
伪类。只需使用select的.val()
方法来检索其当前值:
$('.some_select').change(function() {
alert($(this).val());
});