次の HTML を検討してください。
<select>
<option value="hasAttr">Has a value attr</option>
<option>Does not have a value attr</option>
</select>
ご覧のとおり、オプションの 1 つには value 属性が設定されており、もう 1 つには設定されていません。ただし、val()
jQuery を介して各オプションを確認すると、値属性が設定されていないオプションは、通常期待する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を更新しました。