在jQuery 1.7中取消选中复选框的正确方法是什么?

时间:2012-03-30 20:38:11

标签: jquery

我正在从jQuery 1.5.1升级 - 我已经阅读了关于“检查”复选框(在1.6中)的“新”方法,使用

prop("checked", true);

但删除复选框的正确/首选方式是什么?

这两种方法似乎都有效

$('#someSelector').removeProp("checked");

$('#someSelector').prop("checked", false);

这些方法之间有区别吗?我应该使用哪个?

由于

4 个答案:

答案 0 :(得分:12)

根据http://api.jquery.com/removeprop/ .removeProp不应该用于删除已选中。 (因为它被完全删除,不能再添加回来。)

  

.removeProp()方法删除.prop()方法设置的属性。

     

使用DOM元素或窗口对象的一些内置属性,   如果尝试删除,浏览器可能会生成错误   属性。 jQuery首先将值undefined赋值给属性和   忽略浏览器生成的任何错误。一般来说,它只是   必须删除已在对象上设置的自定义属性,   而不是内置(本机)属性。

     

注意:请勿使用此方法删除本机属性,例如   选中,禁用或已选中。这将删除该属性   完全,一旦删除,不能再添加到元素。使用   .prop()将这些属性设置为false。

答案 1 :(得分:11)

更准确地回答您的问题:

我总是喜欢

$('#someSelector').prop('checked', false);

$('#someSelector').removeProp('checked');

因为属性和属性之间的重要区别在于这种情况,删除属性等于将属性(被检查)设置为false。

删除复选框的“已选中”属性根本没有任何意义,因为复选框将始终被选中或取消选中。因此,将该属性设置为false以取消选中该框在逻辑上是一致的,删除属性不是。

答案 2 :(得分:3)

hiya我虽然我的评论上面会有太多的文字,但为了清楚起见,请写在这里:(我同意@Claudio)

如果这没有帮助让我知道我将删除我的帖子欢呼! :)

所以从这里开始:http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/

[quote]截至1.6我估计...

  

元素值是其他东西,然后是属性或属性   值。如果要取消选中复选框,则要删除   检查属性所以使用$(“#subscribe:checked”)。prop(“checked”,   假);

【引用】

  

jQuery 1.6 +

     

使用新的.prop()函数:

     

$(“。myCheckbox”)。prop(“checked”,true);

     

$(“。myCheckbox”)。prop(“checked”,false);

Setting "checked" for a checkbox with jQuery?希望它有所帮助,我认为你是对的!干杯!

答案 3 :(得分:-1)

$('#someSelector').removeAttr('checked');

删除已检查的属性,你应该好好去。

有关prop vs attr的更多信息,请点击此处。他们还提到了checked属性,并将其专门称为属性,而不是属性。

http://api.jquery.com/prop/