1

これは正しいマークアップですか、それとも無効ですか (オプションに値がない場合)? これは、割り当てられていない場合に
予想される jQuery の動作ですか?.val()value=""

<select id="select_ID">
    <option></option>
    <option>Name</option>
    <option>Recent</option>
</select>

使用する$("#select_ID").val();と「名前」/「最近」を取得しますが、オプションに値がある場合は、値の内容を取得します。

.text()この例では、「名前」と「最近」を取得する必要があることを知っています。値が割り当てられていないときに、なぜ.val()私に与えられるのか混乱しています。.text()

FIDDLE (アラートの結果が異なることに注意してください)

4

3 に答える 3

7

これは jQuery とは関係ありません。それがブラウザがそれを処理する方法です。

http://jsfiddle.net/jDw8N/1/

$("#select_ID").change(function () {
    var val = $("#select_ID option:selected")[0].value;
    alert(val); // somevalue or Recent
});

参考:http ://www.w3.org/TR/html5/forms.html#attr-option-value

value属性は要素の値を提供します。要素の値は、コンテンツ属性がある場合はその値であり、ない場合は要素のIDL 属性の値です。optionvaluetext

于 2013-08-13T20:10:53.607 に答える
0

属性の値を確実に取得したい場合は、value次のコードを使用できます。

http://jsfiddle.net/sepehrmm/dpmr9h4o/

$("#select_ID").change(function () {
    var val = $("option:selected", this).attr('value');
    if(val != undefined){
        alert(val); // this only alerts if the option has a value attribute
    }
});
于 2016-06-17T13:18:42.783 に答える