Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 元素具有“checked”属性,但不是';没有检查吗?_Javascript_Jquery_Input_Checkbox_Toggle - Fatal编程技术网

Javascript 元素具有“checked”属性,但不是';没有检查吗?

Javascript 元素具有“checked”属性,但不是';没有检查吗?,javascript,jquery,input,checkbox,toggle,Javascript,Jquery,Input,Checkbox,Toggle,我正在使用ThreeDubMedia的拖放选择功能来选中和取消选中几个复选框。它将检查和取消检查它们一次,但仅此而已。更重要的是,当我使用inspect查看元素时,它们没有像它们应该的那样选中属性;当他们被选中时,他们会得到它,这是他们应该得到的;当他们再次被选中时,他们会失去它,这是他们应该做的然而,这就是它变得奇怪的地方。如果我第三次选择它,它将获得checked属性,但不检查!如果我第四次选择它,什么也不会发生!我不知道是什么原因造成的 目前,您实际上是在删除属性(使用removeAttr

我正在使用ThreeDubMedia的拖放选择功能来选中和取消选中几个复选框。它将检查和取消检查它们一次,但仅此而已。更重要的是,当我使用inspect查看元素时,它们没有像它们应该的那样选中
属性;当他们被选中时,他们会得到它,这是他们应该得到的;当他们再次被选中时,他们会失去它,这是他们应该做的然而,这就是它变得奇怪的地方。如果我第三次选择它,它将获得
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)