Jquery 如果单击复选框,则避免行折叠

Jquery 如果单击复选框,则避免行折叠,jquery,checkbox,Jquery,Checkbox,我有一个表,其中的行在单击该行时会折叠/展开,每行都有一个复选框。我需要避免它的崩溃或扩大,如果点击恰好是在复选框。 这是jquery代码: $('tr').not('.main').hide(); $('.main').click(function() { $(this).nextUntil('tr.main').slideToggle(10); }); 您应该使用event.stopPropagation 在单击处理程序内部,检查event.target。如

我有一个表,其中的行在单击该行时会折叠/展开,每行都有一个复选框。我需要避免它的崩溃或扩大,如果点击恰好是在复选框。 这是jquery代码:

$('tr').not('.main').hide();
    $('.main').click(function() {
        $(this).nextUntil('tr.main').slideToggle(10);
    });
您应该使用event.stopPropagation


在单击处理程序内部,检查event.target。如果是复选框,则返回true,以便不执行代码:

$('.main').click(function(e) {

    if ($(e.target).is(':checkbox')) {
        return true;
    }

    $(this).nextUntil('tr.main').slideToggle(10);

});

发布您的html/css代码和fiddle示例,以便我们可以帮助您。@billyonecan:是的,但我更喜欢这样做,这样我可以在需要添加更多操作时分离复选框单击。您的代码已被破坏-如果目标是复选框,则您完全阻止了事件,并且复选框不会因此被选中/取消选中。@TwiStar-Oops,谢谢这意味着返回true,而不是false实际上如果我们这样做,我会反向执行代码,只有当e.target不是复选框时才执行。不需要过早的回报或其他什么。
$('.main').click(function(e) {

    if ($(e.target).is(':checkbox')) {
        return true;
    }

    $(this).nextUntil('tr.main').slideToggle(10);

});