使用jQuery我们如何从值为false的所有元素中删除disabled属性?

时间:2012-12-21 00:00:25

标签: javascript jquery jquery-selectors dom-manipulation

我输入的输入复选框如下所示。

<input type="checkbox" id="a1" value="11" disabled="false">
<input type="checkbox" id="a2" value="21" disabled="true">
<input type="checkbox" id="a3" value="31" disabled="false">

我知道disabled属性没有任何价值。因此,当属性存在时,无论分配给它的值如何,元素都将被禁用。我想从值为false的所有输入元素中删除所有disabled属性。

使用jQuery我想使用如下代码。

$("*[disabled]").not(true).removeAttr("disabled");

5 个答案:

答案 0 :(得分:2)

为什么不匹配disabledfalse的元素?

$('[disabled="false"]​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​')​.removeAttr('disabled');​​​

演示:http://jsfiddle.net/ASN29/

disabled属性的存在会自动禁用该元素,而不管属性的值如何,因此这不是一个好主意。 HTML如何成为这种方式?

答案 1 :(得分:2)

你可以简单地使用这样的选择器:

$('input[disabled="false"]').removeAttr("disabled");

jsFiddle Demo

我添加*而不是input,而是缩小了查询范围。这将搜索具有值为input的{​​{1}}属性的disabled元素。

我建议你根本不要这样做。该HTML应该从未生成过。

答案 2 :(得分:0)

​$(document).ready(function (){
    $('input:disabled').removeAttr('disabled');    
});​

以下是关于jsFiddle for it

:disabled selector和文档

答案 3 :(得分:0)

$('input[disabled="false"]').removeAttr("disabled");

请参阅http://jsfiddle.net/JKs4C/

另一方面,至于这是否是一个好主意......我认为真正的答案是修复服务器端渲染,以完全忽略未禁用的元素的禁用属性。否则,如果脚本出错,noscript等等,你最终会禁用所有元素。

答案 4 :(得分:0)

如果你想启用它们,请改用.prop() ..(因为disabledcheckbox输入的实际属性

$('input[disabled="false"]').prop('disabled', false);

http://jsfiddle.net/gaby/Bn4dr/

演示

但正确的方法是直接打印正确的 html

<input type="checkbox" id="a1" value="11">
<input type="checkbox" id="a2" value="21" disabled>
<input type="checkbox" id="a3" value="31">