Jquery引导多选择optgroup选择

Jquery引导多选择optgroup选择,jquery,optgroup,Jquery,Optgroup,我正在使用Jquery引导程序multiselect插件,它看起来相当不错,满足了我所需要的大部分需求 我想要的唯一附加功能是将复选框添加到OptGroup,这样,如果用户想要选择完整的组,他们可以通过单击它来选择全部 谢谢你的帮助 试试这样的方法: $('.multiselect-group').before('<input type="checkbox" />'); $(document).on('click', '.multiselect-group', function(e

我正在使用Jquery引导程序multiselect插件,它看起来相当不错,满足了我所需要的大部分需求

我想要的唯一附加功能是将复选框添加到OptGroup,这样,如果用户想要选择完整的组,他们可以通过单击它来选择全部

谢谢你的帮助


试试这样的方法:

$('.multiselect-group').before('<input type="checkbox" />');
$(document).on('click', '.multiselect-group', function(event) {
    var checkAll = true;
    var $opts = $(this).parent().nextUntil(':has(.multiselect-group)'); 
    var $inactive = $opts.filter(':not(.active)'); 
    var $toggleMe = $inactive;
    if ($inactive.length == 0) { 
        $toggleMe = $opts;
        checkAll = false;
    }
    $toggleMe.find('input').click();
    $(this).parent().find('input').attr('checked', checkAll);
    event.preventDefault();
});
$('.multiselect group')。在('')之前;
$(文档)。在('单击','上。多选组',函数(事件){
var checkAll=true;
var$opts=$(this.parent().nextUntil(“:has(.multiselect group)”);
var$inactive=$opts.filter(':not(.active');
var$toggleMe=$inactive;
如果($inactive.length==0){
$toggleMe=$opts;
checkAll=false;
}
$toggleMe.find('input')。单击();
$(this).parent().find('input').attr('checked',checkAll);
event.preventDefault();
});

您可以使用
event.stopPropagation()

在我选中一个选项组并取消选中它之后,如果我想再次检查它,它将检查该组中的所有选项,但该组仍保持未选中状态

为了使选项组在多次重试后正确显示为选中/未选中,请替换:

$(this).parent().find('input').**attr**('checked', checkAll);


无需执行任何代码即可实现您的要求

此插件中有一个名为
enableClickableOptGroup
的选项,用于选择
optgroup


在代码中只放这行代码

EnableClickableOptGroup:真

这将启用选择组的选项


只有我可以调整UI以调整复选框对齐方式,它才能正常工作。唯一的问题是,如果选择optgroup复选框,下拉列表将自动关闭。有什么解决方法吗?我相信这是来自父列表上的click事件处理程序。使用event.preventDefault()。我将更新答案以显示这一点。任何帮助都将不胜感激。如果您单击“选择组标签”,它将选中“所有儿童但仍隐藏”下拉列表。
$(this).parent().find('input').**prop**('checked', checkAll);