繁体   English   中英

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

[英]Using jQuery how can we remove disabled attribute from all elements whose value is false?

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

<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");

为什么不匹配disabledfalse元素?

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

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

无论属性的值如何, disabled属性的存在都会自动disabled该元素,因此这不是一个好主意。 HTML如何变成这种方式?

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

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

jsFiddle演示

而不是* ,我添加了input ,它缩小了查询范围。 这将搜索具有名为disabled的属性的input元素,其值为false

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

如果你想启用它们,请使用.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">
​$(document).ready(function (){
    $('input:disabled').removeAttr('disabled');    
});​

以下是jsFiddle及其文档:禁用选择器

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

http://jsfiddle.net/JKs4C/

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM