考虑以下 HTML:
<select>
<option value="hasAttr">Has a value attr</option>
<option>Does not have a value attr</option>
</select>
如您所见,其中一个选项设置了 value 属性,而另一个则没有。但是,当我val()
通过 jQuery 检查每个选项时,没有设置 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。