메뉴 건너뛰기

조회 수 8205 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

jQuery를 시작한지 얼마 되지 않아 jQuery함수를 잘 몰라 이래저래 혼용하여 만들어 보았습니다.
근래에 웹 접근성 작업을 하면서 메뉴 스크립트 요청이 잦아서 내친김에 많이 쓰일 수 있을만한 패턴을 올려봅니다.
필요하신 분 퍼다 쓰세요 ㅎㅎ

스크립트명 : GNB, LNB Initialize
HTML구조 : ul – li – ul – li 로 이루어진 2단계 메뉴
이벤트 : mouseover, onfocus

이 스크립트는 언제 쓰죠?
1. 이미지 메뉴가 아닌 올 텍스트 메뉴.
2. GNB는 2뎁스까지 있고, LNB는 1뎁스까지 있는경우. (만약 LNB가 2뎁스까지 있는 경우엔 GNB쪽 펑션과 이벤트리스너를 복사하여 변경하여 사용하세요.)

HTML 구조

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ul id="gnb">
<li><a href="#">GNB A</a>
<ul>
<li><a href="#">GNB A-1</a></li>
<li><a href="#">GNB A-2</a></li>
</ul>
</li>
</ul>
<ul id="lnb">
<li><a href="#">SNB A</a>
<ul>
<li><a href="#">SNB A-1</a></li>
<li><a href="#">SNB A-2</a></li>
</ul>
</li>
</ul>

선언할 변수

헤드에 선언하면 됩니다. GNB, LNB번호를 넣어주어 현재 메뉴 위치를 나타냅니다. 번호는 0번이 아닌 1번부터 시작합니다.

1
2
3
var gnbDep1 = 1; //GNB depth 1
var gnbDep2 = 2; //GNB depth 2
var lnbDep1 = 1; //LNB depth 1

스크립트 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
    함수명 : GNB, LNB Initialize
    작성자 : 장호연(http://eventjang.com)
    코멘트 - UL - LI 구조의 트리구조 메뉴 스크립트.
            - <img>의 src 변경없이 <li>의 클래스 변경만을 필요로 하는 유형에 사용함.
            - mouseover 와 onfocus 이벤트를 처리.
            - 활성화시 클래스는 'active'
*/
jQuery(document).ready(function(){
 
    //초기화 실행
    gnbInit(gnbDep1, gnbDep2);
    lnbInit(lnbDep1);
 
    //마우스커서와 포커스가 메뉴 영역을 벗어났을때 GNB 초기화
    $("#sub, #container, #footer").mouseover(function(){
        gnbInit(gnbDep1, gnbDep2);
    }).focusin(function(){
        $(this).mouseover();
    });
 
    //마우스커서와 포커스가 메뉴 영역을 벗어났을때 LNB 초기화
    $("#header, #contents, #footer").mouseover(function(){
        lnbInit(lnbDep1);
    }).focusin(function(){
        $(this).mouseover();
    });
 
    //GNB mouseover, onfocus 이벤트 처리
    $("#gnb > li > a").mouseover(function(){
        var cnt = gnbDep1;
 
        for(var i=0; i<$("#gnb > li").size(); i++){
            if($("#gnb > li:eq("+ i +")")[0] == $(this).parent()[0]){
                cnt = i+1;
            }
        }
        if(cnt == gnbDep1){
            gnbInit(cnt, gnbDep2);
        } else {
            gnbInit(cnt, "");
        }
    }).focusin(function(){
        $(this).mouseover();
    });
 
    //SNB mouseover, onfocus 이벤트 처리
    $("#lnb > li > a").mouseover(function(){
        var cnt = lnbDep1;
 
        for(var i=0; i<$("#lnb > li").size(); i++){
            if($("#snb > li:eq("+ i +")")[0] == $(this).parent()[0]){
                cnt = i+1;
            }
        }
        lnbInit(cnt);
 
    }).focusin(function(){
        jQuery(this).mouseover();
    });
 
    //선택한 SNB를 active(활성화) 시킨다.
    function gnbInit(dep1, dep2){
        $("#gnb > li > ul").hide();
        $("#gnb > li:eq("+(dep1-1)+") > ul").show();
        $("#gnb > li").removeClass("active");
        $("#gnb > li:eq("+(dep1-1)+")").addClass("active");
        $("#gnb > li > ul > li").removeClass("active");
        if(dep2 != ""){
            $("#gnb > li:eq("+(dep1-1)+") > ul > li:eq("+(dep2-1)+")").addClass("active");
        }
    }
 
    //선택한 LNB를 active(활성화) 시킨다.
    function lnbInit(dep1){
        $("#snb > li").removeClass("active");
        $("#snb > li:eq("+(dep1-1)+")").addClass("active");
    }
 
});
</li>

 


  1. [INPUT BOX] 텍스트박스(INPUT 박스) 가 동적으로 추가,삭제됩니다

    Date2017.02.19 Views8526
    Read More
  2. Location 객체 - URL 파싱 - URL에서 전달인자 추출하기 함수 작성

    Date2015.06.19 Views8523
    Read More
  3. 페이지 로드 할때 컨트롤에 포커스 주기

    Date2015.02.03 Views8500
    Read More
  4. [단축키 설정 자바스크립트]shortcut.js

    Date2016.12.22 Views8375
    Read More
  5. 2단계 트리메뉴 마우스오버(mouseover), 온포커스(onfocus) 구현

    Date2015.04.06 Views8205
    Read More
  6. 드롭다운 메뉴를 만들어보자! -1탄

    Date2015.02.03 Views8171
    Read More
  7. setTimeout() / clearTimeout() / setInterval()

    Date2016.12.22 Views8162
    Read More
  8. 브라우저별 이미지 크기 변경

    Date2016.11.17 Views7928
    Read More
  9. 복사방지+드래그금지+마우스우클릭 금지

    Date2016.12.22 Views7912
    Read More
  10. 정규식을 이용한 실시간 콤마(comma) 넣기

    Date2015.06.19 Views7876
    Read More
  11. [라디오버튼 오류 체크] 간단한 문제 예제

    Date2015.06.19 Views7712
    Read More
  12. 양력-음력

    Date2015.02.03 Views7673
    Read More
  13. 날짜 간의 일수 계산

    Date2014.02.27 Views7551
    Read More
  14. 'checkbox', 체크박스 모두체크 그리고 모두해제!

    Date2015.02.03 Views7492
    Read More
  15. 체크박스 체크하면 레이어 보여주기. 체크안하면 알려주기

    Date2014.03.01 Views7458
    Read More
  16. [jQuery] textarea 글자수 카운트

    Date2014.03.01 Views7420
    Read More
  17. response.setHeader

    Date2016.12.22 Views7358
    Read More
  18. 'blur', 이미지 클릭시 테두리를 없애자!

    Date2015.02.03 Views7353
    Read More
  19. 'opener', 부모창과 자식창의 텍스트를 교환하자!

    Date2015.02.03 Views7308
    Read More
  20. 창에 대한 정보얻기 (창 크기, 창 위치)

    Date2015.06.19 Views7297
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved