Jquery - 问题切换复选框[重复]

Posted

技术标签:

【中文标题】Jquery - 问题切换复选框[重复]【英文标题】:Jquery - issue toggling checkboxes [duplicate] 【发布时间】:2017-08-04 22:30:45 【问题描述】:

我正在使用以下代码,它确实切换了我的复选框,但不正确。

如果复选框已手动设置为选中,则会出现问题。

当您运行代码时,它会选中这些框,但当您再次单击它时,它只会取消选中之前未选中的那些。

$(".all").click(function(e) 
    var checked = !$(this).data('checked');
    $('.trigger').attr('checked', checked);
    $(this).data('checked', checked);
);

我使用 input type='image' 作为我的元素来运行检查。

<input type="image" class="all" title="All" src="toggle.png"/>

我尝试过使用以下方法,但是当它运行时,它会取消选中复选框,然后删除我用来调用它的图像。

$('.all').toggle(function()
    $('input:checkbox').attr('checked','checked');

,function()
    $('input:checkbox').removeAttr('checked');
)

谁能告诉我如何正确地做到这一点。

谢谢

【问题讨论】:

请在您的问题中发布minimal reproducible example。使用 &lt;&gt; 图标将 stacksn-p 直接添加到问题中,以便我们可以观察您所描述的行为 对复选框使用:checked,而不是自定义数据值。或在.all 代码中设置/取消设置您的数据值。 复制代码jsfiddle.net/7sm17x1k的示例 感谢这个例子有意义,我现在开始工作了。 【参考方案1】:

如果你想切换,你必须根据'checked'属性进行选择:

    $('.all').click(function()

    var checked = $('input:checkbox').not(':checked');
    $('input:checkbox:checked').removeAttr('checked');
    checked.attr('checked','checked');
  );

我对“仅取消选中以前未选中的那些”有点困惑——你的意思是,未选中的不能取消选中。

这是一个有效的小提琴:https://jsfiddle.net/4ckjwv8b/

顺便说一句。如果您只想始终选择一个选项,则可以使用输入类型“radio”。

【讨论】:

这似乎对我不起作用。当我使用切换时,它会隐藏我用来触发切换的图像。 我已经更新了我的答案,使用点击而不是切换,并且“选中”需要存储在一个变量中,否则它将在下一行取消选中,它将被选中。

以上是关于Jquery - 问题切换复选框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 移动列表视图中切换复选框

在 jQuery 中使用复选框来切换 2 个数值

复选框的jquery问题[重复]

确定是不是使用 jQuery 检查复选框 [重复]

使用jquery切换所有复选框

获取复选框jquery的当前状态[重复]