-2

我面临一个非常奇怪的问题,其中 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')

提前感谢您的帮助!

4

3 回答 3

1

我要对 tldr Explosion Pills 发表评论。您正在寻找的代码是

$('.some_select').change(function() {
   console.log($(":selected").attr('value'));
});
于 2013-03-20T01:11:34.350 回答
0

那是因为您需要它,.change(function(){..})因此它可以在更改值时更新值,而当值更改时,您拥有的其他代码片段不会更新。还是我误解了什么?

于 2013-03-20T01:03:23.067 回答
0

select 元素没有value属性,因此 alerting$(this).attr('value')将 alert undefined,而不是您声称的所选选项的“好价值”。

您不需要在:selected这里使用伪类。只需使用.val()select 的方法来检索其当前值:

$('.some_select').change(function() {
    alert($(this).val());
});

这是一个演示:http: //jsfiddle.net/qGuxt/

于 2013-03-20T01:18:49.377 回答