Jquery 所有复选框都已选中,但我只希望触发一个复选框

Jquery 所有复选框都已选中,但我只希望触发一个复选框,jquery,checkbox,prop,Jquery,Checkbox,Prop,我有可以添加到收藏夹的项目列表,在本例中,我使用复选框,因此用户可以选中复选框以添加到收藏夹,反之亦然,取消选中复选框以从收藏夹中删除 假设流程如下所示: 当复选框未选中时,用户单击它,它将被选中 当复选框被选中,用户点击它时,它将触发一个模式,要求他们确认是否真的想从收藏夹中删除该项目。在弹出模式中,有一个确认按钮,当用户单击它时,它将取消选中复选框并关闭弹出模式 下面是html元素 <div class="star_wrap"> <input type=

我有可以添加到收藏夹的项目列表,在本例中,我使用复选框,因此用户可以选中复选框以添加到收藏夹,反之亦然,取消选中复选框以从收藏夹中删除

假设流程如下所示:

当复选框未选中时,用户单击它,它将被选中

当复选框被选中,用户点击它时,它将触发一个模式,要求他们确认是否真的想从收藏夹中删除该项目。在弹出模式中,有一个确认按钮,当用户单击它时,它将取消选中复选框并关闭弹出模式

下面是html元素

    <div class="star_wrap">
      <input type="checkbox" /><label onclick="confirmLabelRemove(this)"><label>
    </div>
    i put the click event in label to trigger the input before it to be checked or unchecked
下面是触发道具检查事件的代码

    function confirmLabelRemove(obj) {
    var thisLabelInput = $(obj).prev(); // find the input before the label

    if ($(thisLabelInput).is(':checked')) {
    overlayConfirmShow(); // transparent layer to prevent back content clickable
    $('.confirmation_box').addClass('show'); // show the pop up modal

    $('#confirmBoxConfirm').on('click', function () {
        $(obj).prev().prop('checked', false);
        $(obj).closest('.grid-item').addClass('unfav');
        overlayConfirmHide();
        $('.confirmation_box').removeClass('show');
     });
    } else {
      $(obj).closest('.grid-item').removeClass('unfav');
      $(obj).prev().prop('checked', true);
     }
    }

如果只有一个复选框,那么它工作得非常好。但当它们是复选框列表时,取消选中并选中其中的1个复选框将触发以前选中或未选中的复选框。请提供建议,谢谢。

当此行多次运行$'confirmBoxConfirm'时,您实际上在将多个处理程序附加到click事件。单击时,函数{将不会删除。这意味着单击时,以前设置的每个处理程序都将运行

您可以先尝试删除它:

$('#confirmBoxConfirm').off('click').on('click', function () {
或者,如果已经有其他单击处理程序,并且只想删除此处理程序,则它必须是一个命名函数:

function theClick() {
    $(obj).prev().prop('checked', false);
    $(obj).closest('.grid-item').addClass('unfav');
    overlayConfirmHide();
    $('.confirmation_box').removeClass('show');
};

$('#confirmBoxConfirm').off('click', theClick).on('click', theClick);

关闭“点击”部分实际上是分离那些以前附加的点击事件,我明白了,这实际上解决了问题,谢谢你,卡达。你救了我一天!
function theClick() {
    $(obj).prev().prop('checked', false);
    $(obj).closest('.grid-item').addClass('unfav');
    overlayConfirmHide();
    $('.confirmation_box').removeClass('show');
};

$('#confirmBoxConfirm').off('click', theClick).on('click', theClick);