11

この HTML コードを考えると:

<select id="menu">
    <option>hi</option>
    <option>bye</option>
</select>

この jQuery コード:

$("#menu option").first().attr("value")

メニューの最初のオプションに属性hiがなくても、 を返します。value

に属性<option>がある場合、期待どおりに属性が返されます。valuevalue

上記のコードの戻り値をundefined/ 私が識別できる他のものにする方法はありますか? または、value属性が設定されているかどうかを確認し、設定されていない場合にのみ上記のコードを実行できますか?

4

5 に答える 5

22

:not([attr])セレクターを使用します。

$("#menu option:not([value])");

http://jsfiddle.net/userdude/NQm54/

また、変更後も[value]未設定として報告されるため、value属性のない同じ 2 つの要素を受け取り続けることも確認しました。

$('#menu').change(function(){
  console.log($(this).val());
  console.log($("#menu option:not([value])"));
});

http://jsfiddle.net/userdude/NQm54/2/

于 2013-01-13T05:22:58.617 に答える
2
$("#menu option:eq(0)").not("[value]").length == 1
于 2013-01-13T05:36:37.953 に答える
1

value 属性が設定されていない場合、値はデフォルトでテキスト値になります。以下に示すように、属性値を特定の値に設定するだけで、たとえば空の文字列などを識別できます

<select id="menu">
    <option value="">hi</option>
    <option>bye</option>
</select>

次に、これ$("#menu option").first().attr("value")は空の文字列を返します

于 2013-01-13T05:19:31.153 に答える
1
var option = document.getElementById("menu").options[0];
if (option.getAttribute("value") !== null) {
console.log("Has value: " + option.value);
 }
else {
console.log("Doesn't have a value.");
}
于 2013-01-13T05:35:56.440 に答える