Javascript jQuery:select元素中的unselect选项

Javascript jQuery:select元素中的unselect选项,javascript,jquery,select,Javascript,Jquery,Select,我面临着select元素的一种奇怪行为。因此,我有一个select元素,它有几个选项。其中一个选项为空-插件需要它来输出占位符 我需要清除所选选项的功能,我写了如下内容: $(element).val(''); $(element).find("option:selected").removeAttr("selected"); 问题是“selected”属性仍然在这里,它位于旧选项上——您可以在代码示例中看到它 因此,我有两个问题: 1) 为什么jQuery库的.val()方法不更新选项列表中

我面临着select元素的一种奇怪行为。因此,我有一个select元素,它有几个选项。其中一个选项为空-插件需要它来输出占位符

我需要清除所选选项的功能,我写了如下内容:

$(element).val('');
$(element).find("option:selected").removeAttr("selected");
问题是“selected”属性仍然在这里,它位于旧选项上——您可以在代码示例中看到它

因此,我有两个问题:

1) 为什么jQuery库的.val()方法不更新选项列表中的“selected”属性

2) 为什么我不能在我的情况下更新“selected”属性?如果我切换这些语句,它将起作用:

$(element).find("option:selected").removeAttr("selected");
$(element).val('');
代码示例:

$(函数(){
$(“#取消选择”)。单击(函数(){
$(“#lang_type”).val(“”);
$(“#lang_type”).find(“选项:选定”).removeAttr(“选定”);
警报($(“#lang_type”).html();
});
});

01-文本语言
02-翻译文本的原文
03-摘要语言
04-权利语言
05-权利排除语言
06-多语种版本的原始语言
07-多语种版本的翻译语言
08-音轨语言
09-字幕语言
取消选择编辑:
您可以使用
prop(false)
属性,如

就像@yezzz说的,读一下:
注意:不要使用removeProp()方法删除本机属性,如选中、禁用或选中。这将完全删除该属性,一旦删除,就不能再次添加到元素中。使用.prop()将这些属性改为false。

编辑: 您可以使用
prop(false)
属性,如

就像@yezzz说的,读一下:

注意:不要使用removeProp()方法删除本机属性,如选中、禁用或选中。这将完全删除该属性,一旦删除,就不能再次添加到元素中。使用.prop()将这些属性设置为false。

如果我没有弄错的话,可以先取消选择多选,但一旦选择了任何选项,就不能再取消选择。第8.1.3节规定:

初始状态选择了第一个选项,除非任何元素上都存在选定属性

这让我相信,必须始终选择一个选项。显然,不同的浏览器对此的解释不同


但这似乎不是jQuery的问题,而是浏览器实现的问题。

如果我没有弄错的话,一开始可以取消选择multi-select,但一旦选择了任何选项,就不能再取消选择它。第8.1.3节规定:

初始状态选择了第一个选项,除非任何元素上都存在选定属性

这让我相信,必须始终选择一个选项。显然,不同的浏览器对此的解释不同


但这似乎不是jQuery问题,而是浏览器实现问题。

selected
属性仅反映select输入的初始状态。您不应该真正关心删除它,因为一旦选择了不同的选项(用户或页面上的脚本),它将不会产生任何影响

可以通过
selectedIndex
属性读取或修改输入的当前状态,其中
-1
的值表示未选择任何选项(这从来都不是默认值,因为最初总是选择一个选项)。但是,您似乎想要选择一个特定的“空”选项。 在选择框上设置值会导致选择相应的选项,在您的情况下,这是第一个选项

代码可能正是您想要的。因此,不要介意检查HTML,因为
selected
属性与输入的当前状态无关

但是,
:selected
选择器与当前选定的元素相匹配。您的第一个代码段选择一个选项,从而使其
:selected
,然后尝试从中删除一个不存在的属性。您的第二个代码段假定所选内容保留在最初选定的选项上,然后从中删除该属性。接下来是选择“空”选项,无需采取更多步骤,因为这就是选择选项所需的全部步骤


总而言之:您可以安全地删除所有处理删除所选
属性的代码,因为它不会影响元素的当前状态,该状态已绑定到正确的选项。

所选
属性仅反映所选输入的初始状态。您不应该真正关心删除它,因为一旦选择了不同的选项(用户或页面上的脚本),它将不会产生任何影响

可以通过
selectedIndex
属性读取或修改输入的当前状态,其中
-1
的值表示未选择任何选项(这从来都不是默认值,因为最初总是选择一个选项)。但是,您似乎想要选择一个特定的“空”选项。 在选择框上设置值会导致选择相应的选项,在您的情况下,这是第一个选项

代码可能正是您想要的。因此,不要介意检查HTML,因为
selected
属性与输入的当前状态无关

但是,
:selected
选择器与当前选定的元素相匹配。您的第一个代码段选择一个选项,从而使其
:selected
,然后尝试从中删除一个不存在的属性。您的第二个代码段假定所选内容保留在最初选定的选项上,然后从中删除该属性。下面是选择“空”选项,无需执行更多步骤
$(function(){
  $("#unselect").click(function(){    
    $("#lang_type").val('');
    $("#lang_type").find("option:selected").prop('selected',false);
  });
});