我总是尝试这样做$("input[name=button]").attr("disabled", '');
但它不起作用。为什么这不起作用?
我最终使用了此$("input[name=button]").attr("disabled", false);
。在我看来两者都是等价的。
答案 0 :(得分:4)
为什么这不起作用?
disabled
是所谓的boolean attribute:
许多属性是布尔属性。元素上存在布尔属性表示真值,缺少属性表示假值。
如果该属性存在,则其值必须是空字符串或者是属性规范名称的ASCII不区分大小写匹配的值,没有前导空格或尾随空格。
因此,空值仍表示存在属性,因此表单元素保持禁用状态。
在我看来两者都是等价的。
他们不是。 jQuery以不同方式处理布尔属性。它测试新的,嗯,值和removes the attribute if the value is 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;
}
答案 1 :(得分:2)
答案 2 :(得分:2)
disabled
是一个属性,您应该使用prop
方法而不是attr
方法:
$("input[name=button]").prop("disabled", false);
.prop()
方法是设置属性值的便捷方式 - 尤其是在设置多个属性时,使用函数返回的值或一次设置多个元素的值。设置selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked或defaultSelected时应该使用它。从jQuery 1.6开始,无法再使用.attr()
方法设置这些属性。它们没有相应的属性,只是属性。