jquery删除选项的"selected"属性?

Don*_*ias 37 jquery internet-explorer

为什么在IE8中不能取消选择多行选择框中的所有选项?

$("#myselect").children().removeAttr("selected");
Run Code Online (Sandbox Code Playgroud)

有解决方法吗?没有什么我能想到的(attr("选择","")等)似乎有效.

更新:这是一个更新的jsFiddle.至少让它降级,以便在IE8中选择第一个选项.但是如果没有硬编码选择='选择' IE8似乎需要的.attr调用,它在Firefox,Chrome和IE8中做了3件不同的事情!看到这个版本:,这很简单,看起来应该有效:

  • 在Firefox中:没有选择
  • 在Chrome中:选择了第0个选项
  • 在IE8中:选择了第一个选项

也许我让自己疯了,在那里我看不到有什么错误?

Jon*_*Jon 68

问题以误导的方式提出."删除selected属性"和"取消选择所有选项"是完全不同的事情.

要以文档化的跨浏览器方式取消选择所有选项,请使用其中一个

$("select").val([]);
Run Code Online (Sandbox Code Playgroud)

要么

// Note the use of .prop instead of .attr
$("select option").prop("selected", false);
Run Code Online (Sandbox Code Playgroud)


小智 22

这是jQuery转换为IE8的方式,不一定是浏览器本身.

我能够通过旧学校和jQuery打破一行来解决这个问题:

document.getElementById('myselect').selectedIndex = -1;
Run Code Online (Sandbox Code Playgroud)

  • `$("#myselect")[0] .selectedIndex = -1;`也可以 (4认同)

Gab*_*abe 21

这有效:

$("#myselect").find('option').removeAttr("selected");
Run Code Online (Sandbox Code Playgroud)

要么

$("#myselect").find('option:selected').removeAttr("selected");
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


San*_*osh 10

使用jQuery 1.9及以上版本:

$("#mySelect :selected").prop('selected', false);
Run Code Online (Sandbox Code Playgroud)