Javascript 为什么我的jquery val()没有从我的选择框中选择实际选定的值?
当我键入Javascript 为什么我的jquery val()没有从我的选择框中选择实际选定的值?,javascript,jquery,Javascript,Jquery,当我键入$('select[id*=lstAdvGradYear]')chrome给了我 <select name="Views\ContentArea$ctl00$lstAdvGradYear" id="Views\ContentArea_ctl00_lstAdvGradYear" class="ddReplace" style="display: none; "> <option value="2016">2016</option> <
$('select[id*=lstAdvGradYear]')
chrome给了我
<select name="Views\ContentArea$ctl00$lstAdvGradYear" id="Views\ContentArea_ctl00_lstAdvGradYear" class="ddReplace" style="display: none; ">
<option value="2016">2016</option>
<option value="2015">2015</option>
<option value="2014">2014</option>
<option selected="selected" value="2013">2013</option>
<option value="2012">2012</option>
</select>
2016
2015
2014
2013
2012
当我键入$('select[id*=lstAdvGradYear]')。val()
chrome会回复“2016”
当我键入$('select[id*=lstAdvGradYear]option:selected')。val()
chrome还会回复“2016”
当我键入$('select[id*=lstAdvGradYear]option:selected')
chrome回复[2016]
我做错了什么
我已验证没有其他具有类似名称的下拉列表
编辑:需要澄清的是,我的问题是
.val()
应该返回2013而不是2016这是因为在前两种情况下,您调用了$.val()函数,但在最后一种情况下,您没有
$.val()返回HTML元素的值$()返回一个表示一个或多个html元素的对象,其中包含许多可以调用的方法,包括$.val()
更新:根据文件显示(http://api.jquery.com/attribute-contains-selector/),则
id*=
右侧的值应该用引号括起来。这有什么区别吗?它显示了2013年。你使用什么版本的jquery?嗯?我试图弄明白为什么val()不给我2013,因为它是选定的元素。我知道val()和不使用val()的区别。我很抱歉。我删除了我的评论,因为我不明白你在问什么。在重读之后,我意识到我的回答与以前完全不同。我已经为您更新了我的回答,并提供了更多信息。这与不使用val()无关。我的问题是Val()返回的值不正确,它应该返回2013而不是2016,因为2013是所选选项。最初,我也感到困惑。他说他们都返回“2016”,但他的HTML显示“2013”被选中。这不是获取val或element的问题,而是获取错误的val/element。您的更新是正确的,用引号将其固定。谢谢你,我在发抖[attr=val]
如果只使用字母或不使用特殊字符,并不总是需要引号。值得注意的是,如果由于多个selected=“selected”
元素而从val()
获取错误的选项
元素值,则会发生类似问题。