如何使用jQuery删除属性?

29

我似乎无法让 removeAttr 生效,我正在使用我在 jQuery 网站上看到的示例。基本上,在 onclick 时,我添加了一个禁用字段的属性(这部分运行得很好),但是当用户再次单击时,它应该启用相关字段。我使用警报来确保 else 块被触发,所以我知道那不是问题所在。

代码:

$('#WindowOpen').click(function (event) {
  event.preventDefault();
  $('#forgot_pw').slideToggle(600);

  if('#forgot_pw') {
    $('#login_uname, #login_pass').attr('disabled','disabled');
  } else {
    $('#login_uname, #login_pass').removeAttr('disabled');
  }
});
感谢。

1
如果 ('#forgot_pw') 将始终运行。我猜这是一个打字错误? - mtyaka
2
为了以后的参考,jQuery建议使用.prop()方法(http://api.jquery.com/prop/)来获取和设置输入属性,如disabled。这样更加跨浏览器友好,具体取决于您使用的jQuery版本和用户所使用的浏览器。 - jasonmerino
3个回答

35

大家都用这个:

$('#WindowOpen').toggle(
    function()
    {
        $('#login_uname, #login_pass').attr("disabled","disabled");     
    },
    function()
    {
        $('#login_uname, #login_pass').removeAttr("disabled");      
    });

7

您面临的问题是以下代码行将始终评估为true。

if('#forgot_pw')

尝试替换为

if($('#forgot_pw').attr('disabled'))

同样的问题,我可以将其禁用,但不能重新启用。 - Tarek

4
$('#forgot_pw').attr('disabled', false);

应该适用于您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接