$(this).removeattr('disabled')不在chrome中工作

时间:2014-01-14 06:36:06

标签: jquery checkbox

我正在使用$(this).removeattr('disabled')从复选框中删除已检查的属性,但它在chrome中不起作用。任何人都可以帮助我吗?

我还尝试过其他一些解决方案,比如 -

1)$(this).prop('checked', false)

2)$(this).removeAttr('checked')

3)$(this).attr('checked', false)

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先,您需要了解"attr""prop"

之间的区别

Here's a user's answer,主要部分是:

  

我将总结主要问题:

     
      
  • 您通常需要prop()而不是attr()
  •   
  • 在大多数情况下,prop()执行attr()过去所做的事情。通常会在代码中用attr()替换prop()的来电   工作
  •   
  • 属性通常比属性更容易处理。属性值可以只是一个字符串,而属性可以是任何属性   类型。例如,checked属性是布尔值,style   property是一个对象,每个样式都有各自的属性   size属性是一个数字。
  •   
  • 如果属性和具有相同名称的属性都存在,通常更新一个将更新另一个,但事实并非如此   对于某些输入属性,例如valuechecked:for   这些属性,属性始终表示当前状态   而属性(旧版本的IE除外)对应于   输入的默认值/检查(反映在   defaultValue / defaultChecked财产)。
  •   
  • 此更改删除了一些在属性和属性前面停留的魔法jQuery层,这意味着jQuery开发人员将不得不这样做   了解一下属性和属性之间的区别。   这是件好事。
  •   

现在没有名为"removeattr"的函数,它应该是"removeAttr",如果您使用旧版本的jquery(即< 1.5),这将起作用。

由于checked是元素的属性,因此安全且正确可以使用.prop("checked",false)在所有浏览器中使用。

Another answer更加实用:

  

jQuery 1.6 +

     

使用新的.prop()方法:

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
     

jQuery 1.5.x及以下

     

.prop()方法不可用,因此您需要使用   .attr()

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);
     

请注意,这是the approach used by jQuery's unit tests prior to version 1.6,并且优于使用

$('.myCheckbox').removeAttr('checked');