/** * 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(b, a, c) { var d = b(); b.fn.dropdownHover = function(e) { if ("ontouchstart" in document) { return this } d = d.add(this.parent()); return this.each(function() { var m = b(this), l = m.parent(), k = { delay: 500, instantlyCloseOthers: true }, i = { delay: b(this).data("delay"), instantlyCloseOthers: b(this).data("close-others") }, f = "show.bs.dropdown", j = "hide.bs.dropdown", g = b.extend(true, {}, k, e, i), h; l.hover(function(n) { if (!l.hasClass("open") && !m.is(n.target)) { return true } d.find(":focus").blur(); if (g.instantlyCloseOthers === true) { d.removeClass("open") } a.clearTimeout(h); l.addClass("open"); m.trigger(f) }, function() { h = a.setTimeout(function() { l.removeClass("open"); m.trigger(j) }, g.delay) }); m.hover(function() { d.find(":focus").blur(); if (g.instantlyCloseOthers === true) { d.removeClass("open") } a.clearTimeout(h); l.addClass("open"); m.trigger(f) }); l.find(".dropdown-submenu").each(function() { var o = b(this); var n; o.hover(function() { a.clearTimeout(n); o.children(".dropdown-menu").show(); o.siblings().children(".dropdown-menu").hide() }, function() { var p = o.children(".dropdown-menu"); n = a.setTimeout(function() { p.hide() }, g.delay) }) }) }) }; b(document).ready(function() { b('[data-hover="dropdown"]').dropdownHover() }) })(jQuery, this);