选择没有值属性的选项

时间:2013-08-13 20:05:16

标签: jquery

这是正确的还是无效的标记(当选项没有值时)?
如果没有分配.val(),这是value=""的预期jQuery行为吗?

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

如果我使用$("#select_ID").val();,我会收到“姓名”/“最近”,但如果该选项有值,我会得到该值的内容。

我知道在此示例中有.text()获取“名称”和“最近”。只是混淆了为什么.val()在没有分配值时给我.text()

FIDDLE(注意警报的不同结果)

3 个答案:

答案 0 :(得分:12)

这是正确的DOM行为。 您可以从MDN documentation here

中看到这一点
  

<强>值

     

如果选择此选项,则此属性的内容表示要随表单提交的值。 如果省略此属性,则该值取自选项元素的文本内容

答案 1 :(得分:6)

这与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属性为元素提供值。 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