请考虑以下HTML:
<select>
<option value="hasAttr">Has a value attr</option>
<option>Does not have a value attr</option>
</select>
Run Code Online (Sandbox Code Playgroud)
如您所见,其中一个选项具有值属性集,而另一个选项没有.但是,当我val()通过jQuery 检查每个选项时,没有设置value属性的选项会返回tag(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);
});
});
Run Code Online (Sandbox Code Playgroud)
即使我改变代码来寻找$option.attr('value'),我仍然会得到相同的结果.有没有办法可以检查是否<option>有一个value属性存在将返回布尔值?
这是一个jsFiddle.
用解决方案更新了jsFiddle.