$(document).ready(function () { $(document).on("click", ".MultiCheckBox", function () { var detail = $(this).next(); detail.show(); }); $(document).on("click", ".MultiCheckBoxDetailHeader input", function (e) { e.stopPropagation(); var hc = $(this).prop("checked"); $(this).closest(".MultiCheckBoxDetail").find(".MultiCheckBoxDetailBody input").prop("checked", hc); $(this).closest(".MultiCheckBoxDetail").next().UpdateSelect(); }); $(document).on("click", ".MultiCheckBoxDetailHeader", function (e) { var inp = $(this).find("input"); var chk = inp.prop("checked"); inp.prop("checked", !chk); $(this).closest(".MultiCheckBoxDetail").find(".MultiCheckBoxDetailBody input").prop("checked", !chk); $(this).closest(".MultiCheckBoxDetail").next().UpdateSelect(); }); $(document).on("click", ".MultiCheckBoxDetail .cont input", function (e) { e.stopPropagation(); $(this).closest(".MultiCheckBoxDetail").next().UpdateSelect(); var val = ($(".MultiCheckBoxDetailBody input:checked").length == $(".MultiCheckBoxDetailBody input").length) $(".MultiCheckBoxDetailHeader input").prop("checked", val); }); $(document).on("click", ".MultiCheckBoxDetail .cont", function (e) { var inp = $(this).find("input"); var chk = inp.prop("checked"); inp.prop("checked", !chk); var multiCheckBoxDetail = $(this).closest(".MultiCheckBoxDetail"); var multiCheckBoxDetailBody = $(this).closest(".MultiCheckBoxDetailBody"); multiCheckBoxDetail.next().UpdateSelect(); var val = ($(".MultiCheckBoxDetailBody input:checked").length == $(".MultiCheckBoxDetailBody input").length) $(".MultiCheckBoxDetailHeader input").prop("checked", val); }); $(document).mouseup(function (e) { var container = $(".MultiCheckBoxDetail"); if (!container.is(e.target) && container.has(e.target).length === 0) { container.hide(); } }); }); var defaultMultiCheckBoxOption = { width: '220px', defaultText: 'Select Below', height: '200px' }; jQuery.fn.extend({ CreateMultiCheckBox: function (options) { var localOption = {}; localOption.width = (options != null && options.width != null && options.width != undefined) ? options.width : defaultMultiCheckBoxOption.width; localOption.defaultText = (options != null && options.defaultText != null && options.defaultText != undefined) ? options.defaultText : defaultMultiCheckBoxOption.defaultText; localOption.height = (options != null && options.height != null && options.height != undefined) ? options.height : defaultMultiCheckBoxOption.height; this.hide(); this.attr("multiple", "multiple"); var divSel = $("