在选择元素中启用所有选项

use*_*794 1 javascript jquery

我有一个包含一些禁用选项的下拉菜单。我想让所有选项都启用。

这是html

<select id="selectId">
    <option value="JavaScript" disabled="">JavaScript</option>
    <option value="Angular">Angular</option>
    <option value="Backbone" disabled="">Backbone</option>
</select>
Run Code Online (Sandbox Code Playgroud)

JavaScript :

var select = $("#selectId");
select.find("option").each(function(index, item) {
  item.attr('disabled',false);
});
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:TypeError: item.attr is not a function。这里有什么问题?

Lia*_*iam 5

更改属性(disabaled是属性而不是属性)的正确方法是使用prop,请参阅.prop() 与 .attr()

$("#selectId option").prop('disabled', false);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="selectId">
    <option value="JavaScript" disabled="">JavaScript</option>
    <option value="Angular">Angular</option>
    <option value="Backbone" disabled="">Backbone</option>
</select>
Run Code Online (Sandbox Code Playgroud)

您可以设置,.attr('disabled',false);但这不适用于每个 HTML 元素。删除属性(禁用是属性而不是属性)的正确方法是prop.

each也不会返回 jquery 对象,它返回一个普通的 DOM 元素,因此TypeError: item.attr is not a function.. item没有attr函数,因为它不是 jquery 对象。