sw_megamenu.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. (function (factory) {
  2. 'use strict';
  3. if (typeof define === 'function' && define.amd) {
  4. define([
  5. 'jquery'
  6. ], factory);
  7. } else {
  8. factory(window.jQuery);
  9. }
  10. }(function ($) {
  11. 'use strict';
  12. $.fn.swMegamenu = function() {
  13. $(".navigation.sw-megamenu li.classic .submenu, .navigation.sw-megamenu li.staticwidth .submenu, .navigation.sw-megamenu li.classic .subchildmenu .subchildmenu").each(function(){
  14. $(this).css("left","-9999px");
  15. $(this).css("right","auto");
  16. });
  17. $(this).find("li.classic .subchildmenu > li.parent").mouseover(function(){
  18. var popup = $(this).children("ul.subchildmenu");
  19. var w_width = $(window).innerWidth();
  20. if(popup) {
  21. var pos = $(this).offset();
  22. var c_width = $(popup).outerWidth();
  23. if(w_width <= pos.left + $(this).outerWidth() + c_width) {
  24. $(popup).css("left","auto");
  25. $(popup).css("right","100%");
  26. $(popup).css("border-radius","6px 0 6px 6px");
  27. } else {
  28. $(popup).css("left","100%");
  29. $(popup).css("right","auto");
  30. $(popup).css("border-radius","0 6px 6px 6px");
  31. }
  32. }
  33. });
  34. $(this).find("li.staticwidth.parent,li.classic.parent").mouseover(function(){
  35. var popup = $(this).children(".submenu");
  36. var w_width = $(window).innerWidth();
  37. if(popup) {
  38. var pos = $(this).offset();
  39. var c_width = $(popup).outerWidth();
  40. if(w_width <= pos.left + $(this).outerWidth() + c_width) {
  41. $(popup).css("left","auto");
  42. $(popup).css("right","0");
  43. $(popup).css("border-radius","6px 0 6px 6px");
  44. } else {
  45. $(popup).css("left","0");
  46. $(popup).css("right","auto");
  47. $(popup).css("border-radius","0 6px 6px 6px");
  48. }
  49. }
  50. });
  51. $(window).resize(function(){
  52. $(".navigation.sw-megamenu li.classic .submenu, .navigation.sw-megamenu li.staticwidth .submenu, .navigation.sw-megamenu li.classic .subchildmenu .subchildmenu").each(function(){
  53. $(this).css("left","-9999px");
  54. $(this).css("right","auto");
  55. });
  56. });
  57. $(".nav-toggle").off('click').on('click',function(e){
  58. if(!$("html").hasClass("nav-open")) {
  59. $("html").addClass("nav-before-open");
  60. setTimeout(function(){
  61. $("html").addClass("nav-open");
  62. }, 300);
  63. }
  64. else {
  65. $("html").removeClass("nav-open");
  66. setTimeout(function(){
  67. $("html").removeClass("nav-before-open");
  68. }, 300);
  69. }
  70. });
  71. $("li.ui-menu-item > .open-children-toggle").off("click").on("click", function(){
  72. if(!$(this).parent().children(".submenu").hasClass("opened")) {
  73. $(this).parent().children(".submenu").addClass("opened");
  74. $(this).parent().children("a").addClass("ui-state-active");
  75. }
  76. else {
  77. $(this).parent().children(".submenu").removeClass("opened");
  78. $(this).parent().children("a").removeClass("ui-state-active");
  79. }
  80. });
  81. };
  82. }));