/** * Project: Bootstrap Hover Dropdown * Author: Cameron Spear * Contributors: Mattia Larentis * * Dependencies: Bootstrap's Dropdown plugin, jQuery * * A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. * * License: MIT * * http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ */ (function (e, t, n) { var r = e(); e.fn.dropdownHover = function (n) { if ("ontouchstart" in document) return this; r = r.add(this.parent()); return this.each(function () { var i = e(this), s = i.parent(), o = { delay: 500, instantlyCloseOthers: !0 }, u = { delay: e(this).data("delay"), instantlyCloseOthers: e(this).data("close-others") }, a = "show.bs.dropdown", f = "hide.bs.dropdown", l = e.extend(!0, {}, o, n, u), c; s.hover(function (e) { if (!s.hasClass("open") && !i.is(e.target)) return !0; l.instantlyCloseOthers === !0 && r.removeClass("open"); t.clearTimeout(c); s.addClass("open"); i.trigger(a) }, function () { c = t.setTimeout(function () { s.removeClass("open"); i.trigger(f) }, l.delay) }); i.hover(function () { l.instantlyCloseOthers === !0 && r.removeClass("open"); t.clearTimeout(c); s.addClass("open"); i.trigger(a) }); s.find(".dropdown-submenu").each(function () { var n = e(this), r; n.hover(function () { t.clearTimeout(r); n.children(".dropdown-menu").show(); n.siblings().children(".dropdown-menu").hide() }, function () { var e = n.children(".dropdown-menu"); r = t.setTimeout(function () { e.hide() }, l.delay) }) }) }) }; e(document).ready(function () { e('[data-hover="dropdown"]').dropdownHover() }) })(jQuery, this);