我正在使用选项动态填充选择框。当我这样做时,我希望选择框的值是第一个选项的值(如果你愿意,可以选择'默认选项')。听起来很简单,但我无法让它发挥作用。
var myElement = $('select[name="myName"]');
....尝试了以下三种变体
// myElement.find('option').first().prop('selected', 'selected');
// myElement.val(myElement.find('options').first().val());
myElement.prop('selectedIndex', 0);
...但以下行给出了空白警告
alert(myElement.val());
我哪里错了?
答案 0 :(得分:30)
选项应为选项
myElement.find('option:eq(0)').prop('selected', true);
您可以使用该选项上的eq
选择器选择第一个选项。
如果您知道第一个选项的值。然后你可以简单地做
myElemeent.val('first value') // Which selects the option by default
你试过的第二个案例应该有效,除非你没有在正确的位置打电话。即;等待ajax响应完成。
尝试在done
或success
(已弃用)处理程序
答案 1 :(得分:5)
答案 2 :(得分:4)
您还可以使用下一个代码:
myElement[0].selectedIndex = 0;
这个获取Dom元素(不是jQuery对象),使用vanilla Javascript并使用它根据它的索引将第一个选项设置为选定的选项。
答案 3 :(得分:0)
如果您想确保您的选项具有值并且不是占位符,则可以执行以下操作:
$('select option').filter( function (index, option) {
return option.attributes.value
}).val()
这样您就可以检查HTML节点是否具有属性value
并且不是空的。