元素具有`checked`属性但未检查?

时间:2013-05-21 22:45:55

标签: javascript jquery input checkbox toggle

我正在使用ThreeDubMedia的拖放选择功能来检查和取消选中几个复选框。它会检查并取消选中它们一次,但不会超过它。更重要的是,当我通过使用inspect来查看元素时,它们的开始没有checked属性,因为它们应该;如果被选中,他们就会获得它;当他们应该再次被选中时,他们会失去它。 然而,这是奇怪的地方。如果我选择第三时间,它会获得checked属性,但不会检查!如果我第四次选择它,没有任何反应!我不知道造成这种情况的原因。

http://i.snag.gy/AieOg.jpg

1 个答案:

答案 0 :(得分:4)

目前,您实际上是删除了该属性(使用removeAttr())而不是仅将其关闭(例如prop('checked', false))。

您应该使用prop()。以下作品:

if (this.checked) {
    $(this).prop('checked', false);
} else {
    $(this).prop('checked',true);
}

jsFiddle here.


或者更好,正如@Pointy提到的那样:

.drop(function( ev, dd ){
  this.checked = !this.checked;
});

jsFiddle here.