Javascript 元素具有“checked”属性,但不是';没有检查吗?
我正在使用ThreeDubMedia的拖放选择功能来选中和取消选中几个复选框。它将检查和取消检查它们一次,但仅此而已。更重要的是,当我使用inspect查看元素时,它们没有像它们应该的那样选中Javascript 元素具有“checked”属性,但不是';没有检查吗?,javascript,jquery,input,checkbox,toggle,Javascript,Jquery,Input,Checkbox,Toggle,我正在使用ThreeDubMedia的拖放选择功能来选中和取消选中几个复选框。它将检查和取消检查它们一次,但仅此而已。更重要的是,当我使用inspect查看元素时,它们没有像它们应该的那样选中属性;当他们被选中时,他们会得到它,这是他们应该得到的;当他们再次被选中时,他们会失去它,这是他们应该做的然而,这就是它变得奇怪的地方。如果我第三次选择它,它将获得checked属性,但不检查!如果我第四次选择它,什么也不会发生!我不知道是什么原因造成的 目前,您实际上是在删除属性(使用removeAttr
属性;当他们被选中时,他们会得到它,这是他们应该得到的;当他们再次被选中时,他们会失去它,这是他们应该做的然而,这就是它变得奇怪的地方。如果我第三次选择它,它将获得checked
属性,但不检查!如果我第四次选择它,什么也不会发生!我不知道是什么原因造成的
目前,您实际上是在删除属性(使用removeAttr()
),而不是仅仅关闭它(例如prop('checked',false)
)
你应该使用。以下工作:
if (this.checked) {
$(this).prop('checked', false);
} else {
$(this).prop('checked',true);
}
或者更好,正如@Pointy
提到的:
.drop(function( ev, dd ){
this.checked = !this.checked;
});
目前,您实际上是在删除属性(使用removeAttr()
),而不是仅仅关闭它(例如prop('checked',false)
)
你应该使用。以下工作:
if (this.checked) {
$(this).prop('checked', false);
} else {
$(this).prop('checked',true);
}
或者更好,正如@Pointy
提到的:
.drop(function( ev, dd ){
this.checked = !this.checked;
});
就这样吧。this.checked=!这是检查过的代码>?太完美了;我喜欢第二个——非常优雅。为什么我的方法不起作用?@Ian你实际上是在删除属性(removeAttr)那么就this.checked=!这是检查过的代码>?太完美了;我喜欢第二个——非常优雅。为什么我的方法不起作用?@Ian你实际上是在删除属性(removeAttr)