Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery如何从所有值为false的元素中删除禁用的属性?_Javascript_Jquery_Jquery Selectors_Dom Manipulation - Fatal编程技术网

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

Javascript 使用jQuery如何从所有值为false的元素中删除禁用的属性?,javascript,jquery,jquery-selectors,dom-manipulation,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]").not(true).removeAttr("

我有如下打印的输入复选框

<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]").not(true).removeAttr("disabled");

这是关于的文件和文档,为什么不匹配
禁用的
false的元素呢

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


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

您可以简单地使用如下选择器:

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

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

我建议你不要这样做。该HTML不应该被生成

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


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

如果要启用它们,请使用。。(这是因为
禁用了
作为
复选框
输入的实际属性)

演示


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



disabled
属性的存在会自动禁用元素,而不管该属性的值如何,因此这将从具有
disabled
属性的所有元素中删除
disabled
属性。用于启用所有禁用的元素方法注意:一旦删除该属性,AFAIK,它不能放回去。但你为什么要这样做?确切地说。。。为什么要这样做?从源头上解决问题。首先不要向客户端交付损坏的HTML。我使用的是一个基于云的开发框架,在这个框架中,我不能在没有值的元素中打印属性。因此,我将使用jQuery删除带有假值的。在Salesforce.com云环境中,打印html元素的小部件(组件),每个属性都必须有一个与XML属性类似的值。我的问题在于firefox缓存了填充下拉列表的结果。一些下拉元素在以前使用该页面时被禁用,firefox从缓存加载时仍保留禁用的属性。在页面加载时,我想删除所有禁用的属性。
$('input[disabled="false"]').removeAttr("disabled");
$('input[disabled="false"]').prop('disabled', false);
<input type="checkbox" id="a1" value="11">
<input type="checkbox" id="a2" value="21" disabled>
<input type="checkbox" id="a3" value="31">