jquery - 我的 jquery 复选框错误

标签 jquery

我想不出一个好的方法来修复这个错误。如果我取消选中方 block ,取消选中红色,然后重新选中红色,红色方 block 就会回来。当用户取消选中并检查颜色时,如何确保不会添加任何未选中的形状?

我的实际工作示例有更多的复选框和 100 倍的数据。 JSFiddle 清楚地显示了该错误。

谢谢!

http://jsfiddle.net/h3AbN/

最佳答案

找到了。这是这一行:

$.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/

相关文章:

javascript - 停止滚动自动定位列

jquery - 如何在网络浏览器上绘制箭头

javascript - 为什么 Meteor 不更新输入事件的以下输入?

javascript - 想知道这个例子中 .delay() 的机制,jQuery

jquery - 使用 jQuery 选项卡作为站点导航器?

javascript - 如何删除已经生成的脚本标签并重新生成?

javascript - 加载函数后使用jquery

jquery - 如何从表中选择两列数据?

Javascript:给JS中的元素附加事件或者有元素调用函数

javascript - 如何使用 laravel 重命名已存储在服务器中的文件?