Answers:
使用removeAttr ...
$("option:selected").removeAttr("selected");
或道具
$("option:selected").prop("selected", false)
.val([])
或.prop("selected", false)
向下滚动。
$("option:selected").prop("selected", false)
有时不起作用。(不适用于带有jquery
这里有很多答案,但是不幸的是,所有答案都已经很老了,因此只能依靠attr
/ removeAttr
,这确实不是解决之道。
@coffeeyesplease正确提到要使用一个好的跨浏览器解决方案
$("select").val([]);
另一个好的跨浏览器解决方案是
// Note the use of .prop instead of .attr
$("select option").prop("selected", false);
您可以在此处看到它进行了自检。在IE 7/8/9,FF 11,Chrome 19上进行了测试。
Array.indexOf
需要为IE <9填充工具(或者可以使用任何等同的方法,许多JS库提供)。
$('#select').val([]);
?不幸的是,这不会删除selected="selected"
属性。这可能最终会发布错误的数据。我不推荐这种方法!
从问到已经有一段时间了,我还没有在较旧的浏览器上进行过测试,但是在我看来,更简单的答案是
$("#selectID").val([]);
.val()也可用于选择http://api.jquery.com/val/
$("select option").prop("selected", false);
普遍适用(适用于多选和单选)。
$('select').val('')
我只是在选择本身上使用了它,就成功了。
我在jQuery 1.7.1上。
非常感谢您的解决方案。
单选组合列表的解决方案运行完美。我在许多网站上搜索后发现了这一点。
$("#selectID").attr('selectedIndex', '-1').children("option:selected").removeAttr("selected");
通常,当我使用选择菜单时,每个选项都有一个与之关联的值。例如
<select id="nfl">
<option value="Bears Still...">Chicago Bears</option>
<option selected="selected" value="Go Pack">Green Bay Packers</option>
</select>
console.log($('#nfl').val()) logs "Go Pack" to the console
Set the value to an empty string $('#nfl').val("")
console.log($('#nfl').val()) logs "" to the console
现在,这不会从选项中删除选定的属性,但我真正想要的只是值。