0

Line of code in question:

$(this).find('select option:first').val();

If my select has this structure:

<select>
    <option> -- choose -- </option>
    <option value="some_value"> Some text</option>
</select>

the jQuery code I posted above will return --choose-- as a value. Is there a way I could understand if the option has a value or not, instead of returning the text in it?

4

4 回答 4

4

在你的情况下,如果你的第一个option没有value属性,你可以使用这个:

$(this).find('select option[value]:first').val()

这将返回option您的第一个标签,select但要求它具有该value属性。

更新:

根据@Samuel Caillerie 的评论,您可以使用多个属性选择器来避免 IE 奇怪的行为:

select option[value][value!=""]:first

这适用于 Chrome 和 IE 10,兼容模式设置为 IE 8。

于 2013-07-22T14:50:56.323 回答
3
$(this).find('select option:first').attr('value');

注意:undefined如果未设置 value 属性,这将返回

于 2013-07-22T14:50:16.000 回答
2

你可以这样做:

$(this).find('select option:selected').attr('value');
于 2013-07-22T14:51:17.560 回答
1

尝试这个:

$(this).find('select option:first').attr('value');
于 2013-07-22T14:50:39.157 回答