我想不出一个好的方法来修复这个错误。如果我取消选中方 block ,取消选中红色,然后重新选中红色,红色方 block 就会回来。当用户取消选中并检查颜色时,如何确保不会添加任何未选中的形状?
我的实际工作示例有更多的复选框和 100 倍的数据。 JSFiddle 清楚地显示了该错误。
谢谢!
最佳答案
找到了。这是这一行:
$.each($tmp, function(i, val4) {
if ($this.is(":checked")) { // problem is here
if ($('.' + val4 + '').is(":visible") == true) {
改成这样
$.each($tmp, function(i, val4) {
if ($(this).is(":checked")) { // problem is here
if ($('.' + val4 + '').is(":visible") == true) {
更新:为什么?
您混淆了 $this 和 $(this)。您可以在函数的早期定义 $this,它指向用户单击的复选框。但是,在 $.each 函数中,您想要检查 checkArray 中的复选框是否已选中。为此,您应该引用 checkArray 中的项目,而不是单击的复选框。
关于jquery - 我的 jquery 复选框错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496973/