3

我总是尝试这样做$("input[name=button]").attr("disabled", '');,但它不起作用。为什么这不起作用?

我最终使用了这个$("input[name=button]").attr("disabled", false);。在我看来,两者都是等价的。

4

3 回答 3

4

为什么这不起作用?

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;
}
于 2012-10-26T05:50:41.650 回答
2

您可以使用removeAttr()删除属性

要删除disabled,请尝试这样做,

$("input[name=button]").removeAttr("disabled");

于 2012-10-26T05:41:08.233 回答
2

disabled是一个属性,你应该使用prop方法而不是attr方法:

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

.prop()方法是设置属性值的便捷​​方式——尤其是在设置多个属性、使用函数返回的值或同时设置多个元素的值时。在设置 selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked 或 defaultSelected 时应使用它。从 jQuery 1.6 开始,这些属性不能再用.attr()方法设置。它们没有对应的属性,只是属性。

于 2012-10-26T05:47:10.620 回答