Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 유료
- 게임
- 가사
- 잡담
- 후기
- php
- 추천
- 일상
- 아이폰
- great forest
- 감상
- 강추
- 모뉴먼트
- 맛집
- jQuery
- Pink
- 아이폰게임
- 레고
- 공략
- 영화
- 아이패드
- JavaScript
- 카이로소프트
- 모뉴먼트 밸리
- Monument
- 핑크
- goblin sword
- Monument Valley
- 아이러브니키
- 시사회
Archives
- Today
- Total
잡담소장소
context menu 구현 본문
그냥 대충 만들까 싶다가도 괜히 더 잘 만들고 싶이서 삽질한 context menu.
jquery에 있는 menu기능을 이용하고 싶었지만 그냥 떠있고 좀 더 디테일한 구현을 위해서는 plugin을 써야해서
plugin따위는 개나줘버리는 나는 일일히 찾아서 내가 원하는 대로 구현 완료 ㅠㅠ
* jqueryui와 bootstrap을 이용
1. context menu가 뜨고자 하는 곳에 bind를 걸어준다.
$("#div_index").bind("contextmenu", function(e){ $("#menu").css({ display:"block", left: e.offsetX, top: e.offsetY }); ... });
2. context menu의 이벤트 처리 함수도 생성한다
$("#menu").on("click", "a", function(e){ ... });
3. 메뉴가 아닌 부분을 클릭했을 때 닫아주자.
$("#div_index").mouseup( function (e){ var container = $("#menu"); if( container.has(e.target).length == 0 ){ container.hide(); } }); //이 메소드는 레이어창을 띄우고 그 외 부분을 클릭했을 때 창을 닫게 하는 방법으로도 유용
4. menu를 그려주자
- 안녕하세요
- 반갑습니다
5. 그 외 추가적으로..
- 오른쪽 버튼 클릭 시에 context menu의 위치가 div 위에서와 div 위의 element 위와 차이가 있다.
해당 문제를 해결하기 위해 bind 함수에서 e.target.id 로 내가 클릭한 곳의 id를 가져와서 분기처리 후에 left, top을 따로 설정해준다.
: div ) left:e.offsetX, top:e.offsetY
: element ) left:e.pageX - $(this).offset.left, top:e.pageY - $(this).offset.top
- 특정메뉴를 사용하고 싶지 않을 경우 .addClass("ui-state-disabled")를 이용하였다.
: click 이벤트에서 $(this).hasClass("ui-state-disabled")를 반환받아서 return false 처리.
반응형
'Study ;3' 카테고리의 다른 글
javascript callback 함수 (0) | 2014.02.06 |
---|---|
javascript 파일의 오묘함 (0) | 2014.01.10 |
fancybox reload or page 호출 (0) | 2013.11.19 |
세로 탭 메뉴바 구현 (0) | 2013.11.12 |
헤더를 통한 엑셀 export 할 때 숫자를 문자열로 변환 (0) | 2013.10.07 |
Comments