2014-01-17 139 views

回答

4

尝试是这样的:

$('.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(); 
}); 
+0

所有选项看调整复选框对齐。唯一的问题是,如果您选择optgroup复选框下拉菜单会自动关闭。任何工作? –

+0

我相信这是来自父列表上的单击事件处理程序。使用event.preventDefault()。我会更新答案来展示这一点。 – PatrickDelancy

+0

任何帮助将不胜感激。 –

4

您可以使用event.stopPropagation(); 我不能评论由于较少的声誉。 希望这会有所帮助。

1

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

为了使选项组为几次重试后选中/取消正常显示,请更换:

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

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