86 lines
2.9 KiB
JavaScript
86 lines
2.9 KiB
JavaScript
/*!
|
|
* Bootstrap submenu fix
|
|
* Version: 1.2
|
|
* Author web-master72
|
|
*/
|
|
|
|
(function($){
|
|
|
|
$(window).on('load', function() {
|
|
|
|
var navBreakpoint = 991,
|
|
mobileTest;
|
|
|
|
/* ---------------------------------------------- /*
|
|
* Mobile detect
|
|
/* ---------------------------------------------- */
|
|
|
|
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
|
|
mobileTest = true;
|
|
} else {
|
|
mobileTest = false;
|
|
}
|
|
|
|
/* ---------------------------------------------- /*
|
|
* Nav hover/click dropdown
|
|
/* ---------------------------------------------- */
|
|
|
|
$(window).resize(function(){
|
|
|
|
var width = Math.max($(window).width(), window.innerWidth);
|
|
var menuItem = $('.menu-item-has-children').not('.mega-menu-col');
|
|
|
|
// Remove old margins from sub-menus
|
|
menuItem.children('.sub-menu, .mega-menu').css('margin-left', '');
|
|
|
|
if ( width > navBreakpoint ) {
|
|
menuItem.removeClass('sub-menu-open');
|
|
}
|
|
|
|
if ( (width > navBreakpoint) && (mobileTest !== true) ) {
|
|
|
|
menuItem.children('a').unbind('click');
|
|
menuItem.unbind('mouseenter mouseleave');
|
|
menuItem.on({
|
|
mouseenter: function () {
|
|
$(this).addClass('sub-menu-open');
|
|
},
|
|
mouseleave: function () {
|
|
$(this).removeClass('sub-menu-open');
|
|
}
|
|
});
|
|
} else {
|
|
menuItem.unbind('mouseenter mouseleave');
|
|
menuItem.children('a').unbind('click').click(function(e) {
|
|
e.preventDefault();
|
|
$(this).parent().toggleClass('sub-menu-open');
|
|
|
|
// If device has big screen
|
|
if ( (width > navBreakpoint) && (mobileTest == true) ) {
|
|
$(this).parent().siblings().removeClass('sub-menu-open');
|
|
$(this).parent().siblings().find('.sub-menu-open').removeClass('sub-menu-open');
|
|
}
|
|
});
|
|
}
|
|
|
|
// if ( (width > navBreakpoint) && (mobileTest !== true) ) {
|
|
|
|
if (width >= navBreakpoint) {
|
|
menuItem.children('.sub-menu, .mega-menu').each(function() {
|
|
var a = $(this).offset();
|
|
var b = $(this).width() + a.left;
|
|
var c = width - (b + 30);
|
|
|
|
if ( (b + 30) > width ) {
|
|
$(this).css('margin-left', c);
|
|
} else {
|
|
$(this).css('margin-left', '');
|
|
}
|
|
});
|
|
}
|
|
|
|
}).resize();
|
|
|
|
});
|
|
|
|
})(jQuery); |