这是正确的还是无效的标记(当选项没有值时)?
如果没有分配.val()
,这是value=""
的预期jQuery行为吗?
<select id="select_ID">
<option></option>
<option>Name</option>
<option>Recent</option>
</select>
如果我使用$("#select_ID").val();
,我会收到“姓名”/“最近”,但如果该选项有值,我会得到该值的内容。
我知道在此示例中有.text()
获取“名称”和“最近”。只是混淆了为什么.val()
在没有分配值时给我.text()
。
FIDDLE(注意警报的不同结果)
答案 0 :(得分:12)
这是正确的DOM行为。 您可以从MDN documentation here:
中看到这一点<强>值强>
如果选择此选项,则此属性的内容表示要随表单提交的值。 如果省略此属性,则该值取自选项元素的文本内容。
答案 1 :(得分:6)
这与jQuery无关。这就是浏览器处理它的方式。
$("#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
属性为元素提供值。option
元素的值是value
内容属性的值(如果有),或者,如果没有,则为元素{{1}的值IDL属性。
答案 2 :(得分:0)
如果您想确保获得$("#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
}
});
属性的值,可以使用以下代码:
http://jsfiddle.net/sepehrmm/dpmr9h4o/
ul li:last-child