JQuery의 mbMenu 컨트롤에 OpenOnLeft 옵션을 추가하여 메인 메뉴의 왼쪽에 하위 메뉴를 열 수 있습니다

15367 단어 jquery
최근에 JQuery의 mbMenu 컨트롤을 사용해서 컨트롤을 보여 주었는데 기능이 매우 강합니다. 저는 슈퍼JavaScript 흰둥이입니다. JQuery에게도 흰둥이입니다. 쓸 수 있으면 좋은 태도로 이 컨트롤을 사용합니다.어쩔 수 없이 메인 메뉴의 왼쪽에 하위 메뉴를 표시해야 하는 기능이 필요합니다. 그러나 mbMenu는 기본적으로 메인 메뉴 아래에 하위 메뉴를 표시하고 메인 메뉴 오른쪽에 하위 메뉴를 표시하도록 설정할 수 있습니다. 유독 메인 메뉴 왼쪽에 하위 메뉴를 표시할 수 있는 기능이 없으면 어떻게 합니까?다행히 현재 1급 메뉴만 있으니 스스로 해결할 수 밖에 없다.
다음은 수정과 관련된 코드입니다. 여기에 남겨진 것은 단지 압축 파일일 뿐입니다.
먼저 OpenOnLeft 매개 변수를 추가합니다. 이 중 7줄은 추가된 코드입니다.
 1 options: {
2 template: "yourMenuVoiceTemplate", // the url that returns the menu voices via ajax. the data passed in the request is the "menu" attribute value as "menuId"
3 additionalData: "",
4 menuSelector: ".menuContainer",
5 menuWidth: 400,
6 openOnRight: false,
7 openOnLeft: false,
8 containment: "window",
9 iconPath: "ico/",
10 hasImages: true,
11 fadeInTime: 100,
12 fadeOutTime: 200,
13 menuTop: 0,
14 menuLeft: 0,
15 submenuTop: 0,
16 submenuLeft: 4,
17 opacity: 1,
18 openOnClick: true,
19 closeOnMouseOut: false,
20 closeAfter: 500,
21 minZindex: "auto", // or number
22 hoverIntent: 0, //if you use jquery.hoverIntent.js set this to time in milliseconds; 0= false;
23 submenuHoverIntent: 200, //if you use jquery.hoverIntent.js set this to time in milliseconds; 0= false;
24 onContextualMenu: function () { } //it pass 'o' (the menu you clicked on) and 'e' (the event)
25 },

  
다음 코드는 OpenOnLeft에 대한 처리를 포함하는데, 그 중에서 18 ~ 22 줄은 추가된 코드이다
 1 switch (type)
2 {
3 case "sm":
4 t = $(this).position().top + op.options.submenuTop;
5
6 l = $(this).position().left + $(this).width() - op.options.submenuLeft;
7 break;
8 case "cm":
9 t = this.mouseY - 5;
10 l = this.mouseX - 5;
11 break;
12 default:
13 if (op.options.openOnRight)
14 {
15 t = $(this).offset().top - ($.browser.msie ? 2 : 0) + op.options.menuTop;
16 l = $(this).offset().left + $(this).outerWidth() - op.options.menuLeft - ($.browser.msie ? 2 : 0);
17 }
18 else if (op.options.openOnLeft)
19 {
20 t = $(this).offset().top - ($.browser.msie ? 2 : 0) + op.options.menuTop;
21 l = $(this).offset().left - $(this.menuContainer).outerWidth() - op.options.menuLeft - ($.browser.msie ? 2 : 0);
22 }
23 else
24 {
25 t = $(this).offset().top + $(this).outerHeight() - (!$.browser.mozilla ? 2 : 0) + op.options.menuTop;
26 l = $(this).offset().left + op.options.menuLeft;
27 }
28 break;
29 }

좋은 웹페이지 즐겨찾기