我总是尝试这样做$("input[name=button]").attr("disabled", '');
,但它不起作用。为什么这不起作用?
我最终使用了这个$("input[name=button]").attr("disabled", false);
。在我看来,两者都是等价的。
我总是尝试这样做$("input[name=button]").attr("disabled", '');
,但它不起作用。为什么这不起作用?
我最终使用了这个$("input[name=button]").attr("disabled", false);
。在我看来,两者都是等价的。
为什么这不起作用?
disabled
是一个所谓的布尔属性:
许多属性是布尔属性。元素上存在布尔属性表示真值,不存在该属性表示假值。
如果该属性存在,则其值必须是空字符串或与属性的规范名称匹配的不区分大小写的 ASCII 值,并且没有前导或尾随空格。
所以一个空值仍然表示该属性的存在,因此表单元素保持禁用状态。
在我看来,两者都是等价的。
他们不是。jQuery 以不同的方式处理布尔属性。它测试新的 uhm 值的值,如果值为 ,则删除该属性false
:
set: function( elem, value, name ) {
var propName;
if ( value === false ) {
// Remove boolean attributes when set to false
jQuery.removeAttr( elem, name );
} else {
// ...
}
return name;
}
disabled
是一个属性,你应该使用prop
方法而不是attr
方法:
$("input[name=button]").prop("disabled", false);
该
.prop()
方法是设置属性值的便捷方式——尤其是在设置多个属性、使用函数返回的值或同时设置多个元素的值时。在设置 selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked 或 defaultSelected 时应使用它。从 jQuery 1.6 开始,这些属性不能再用.attr()
方法设置。它们没有对应的属性,只是属性。