有问题的代码行:
$(this).find('select option:first').val();
如果我的选择具有以下结构:
<select>
<option> -- choose -- </option>
<option value="some_value"> Some text</option>
</select>
我上面发布的jQuery代码将返回--choose--
作为值。有没有办法让我理解该选项是否有值,而不是返回其中的文本?
答案 0 :(得分:3)
$(this).find('select option:first').attr('value');
注意:如果未设置value属性,则会返回undefined
答案 1 :(得分:3)
在您的情况下,如果您的第一个option
没有value
属性,则可以使用此功能:
$(this).find('select option[value]:first').val()
这将返回option
中的第一个select
标记,但要求它具有value
属性。
<强>更新强>
基于@Samuel Caillerie的评论,您可以使用multiple attribute selectors来避免IE奇怪的行为:
select option[value][value!=""]:first
适用于Chrome和IE 10,兼容模式设置为IE 8。
答案 2 :(得分:2)
你可以这样做:
$(this).find('select option:selected').attr('value');
答案 3 :(得分:1)
试试这个:
$(this).find('select option:first').attr('value');