jquery - 启用按钮令人困惑

时间:2012-10-26 05:40:08

标签: jquery

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

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

3 个答案:

答案 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)

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

要删除disabled,请尝试执行此操作,

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

答案 2 :(得分:2)

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

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

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