考虑以下HTML:
<select>
<option value="hasAttr">Has a value attr</option>
<option>Does not have a value attr</option>
</select>
如您所见,其中一个选项设置了value属性,而另一个则没有。但是,当我通过jQuery检查每个选项的val()
时,没有设置value属性的选项返回的是标签内的文本(html()
),而不是像我通常期望的那样返回undefined
。
var $select = $('select');
$select.each(function() {
var $this = $(this),
$options = $this.children('option');
$options.each(function(){
var $option = $(this),
$value = $option.val(),
$html = $option.html();
console.log('Option Value: '+ $value +'\nOption HTML: '+ $html);
});
});
即使我将代码更改为查找
$option.attr('value')
,我仍然得到相同的结果。有没有一种方法可以检查<option>
是否具有value
属性存在,并返回布尔值?这里是一个JsFiddle。
使用解决方案更新的JsFiddle。
<option value="">无值</option>
,即使如此,它实际上仍然具有空字符串(""
)的值,这在概念上与没有值(null
)是不同的。 - zzzzBov