Files
nhgooi.nl/resources/assets/js/functions/menu.js
2024-03-20 12:31:55 +01:00

71 lines
2.2 KiB
JavaScript
Vendored

(function ($) {
/**
* @param {object} _options
*/
$.fn.menu = function (_options) {
var options = {
menuSubmenuClass: 'has_submenu'
};
$.extend(options, _options);
var $menus = $(this).children('.' + options.menuSubmenuClass);
var $container = $(this);
$menus.on( "mouseenter", function () {
var $menuItem = $(this);
$('.menu-submenu > ul.submenu').slideUp(400, function(){$(this).closest('.menu-submenu').remove()});
$('.hover', $container).removeClass('hover');
$menuItem.addClass('hover');
var submenu = $('<div style="width: ' + $menuItem.outerWidth() + 'px"><a href="' + $menuItem.find('a').attr('href') + '" style="width: ' + $menuItem.outerWidth() + 'px"></a></div>').append($menuItem.children('ul.submenu').clone());
var pos = $menuItem.offset();
submenu.addClass('menu-submenu').css({top: pos.top, left: pos.left});
submenu.on( "mouseleave", function() {
$('.menu-submenu > ul.submenu').slideUp(400, function(){$(this).closest('.menu-submenu').remove()});
$menuItem.removeClass('hover');
} );
$('body').append(submenu);
submenu.children('ul.submenu').slideDown();
submenu.find('ul.submenu').subMenu({});
openPlayerInNewScreen();
});
};
/**
* @param {object} _options
*/
$.fn.subMenu = function (_options) {
var options = {
menuSubmenuClass: 'has_submenu'
};
$.extend(options, _options);
var $container = $(this);
$container.find('li.' + options.menuSubmenuClass + ' > a').click(function(e) {
e.preventDefault();
var $li = $(this).closest('li');
$li.children('ul.submenu').slideToggle();
$li.toggleClass('opened');
});
};
}(jQuery));
$(function () {
$('.menu').menu({});
$('.mobile-menu').subMenu({});
$('.mobile_menu_button a').click(function() {
$('.mobile_menu_container').show();
});
$('.mobile_close_menu_button a').click(function() {
$('.mobile_menu_container').hide();
});
$('.mobile_menu_container').click(function(e){
var $target = $(e.target);
if(!$target.closest('#mobile_menu_nav').length &&
$('.mobile_menu_container').is(":visible")) {
$('.mobile_menu_container').hide();
}
});
});