2014-02-11 2 views
0

좋아요. 메뉴를 드롭 다운 했으므로 body.for에있는 아무 곳이나 클릭 할 때마다 body 태그에 자바 스크립트 코드를 붙여야합니다. 나는 JavaScript에 익숙하지 않고 이것을 어떻게하는지 모른다. 이것은 가능한가?body 태그에 자바 스크립트를 첨부하십시오.

그런데 Jquery로이 작업을 수행하는 방법을 찾았지만 사용하고 싶지 않습니다.

또한 예제를 사용하면 정말 유용 할 것입니다.

감사합니다.

(무시) ​​

<script> 
function show_menu(){ 
    var menu = document.getElementById('dropdown_menu'); 

    if(menu.style.display == 'block'){ 
     menu.style.display = 'none'; 
    }else { 
     menu.style.display = 'block';      
    } 
} 
</script> 
+0

는 왜 작동하는지 jQuery를 사용하려는 해달라고? –

+0

@oGeez 그의 HTML은

답변

2

addEventListener는 (몇 가지 다른 것들 사이에) 모든 요소의 방법이며 "뭔가"가 발생하면 함수 실행을 할 수있는 표준 방법입니다.

body 요소에서 어떤 종류의 이벤트에 반응하고 어떤 기능을 실행할지 알려주십시오.

document.body.addEventListener('click', show_menu); 
+0

이 될 것입니다.하지만 실제로는 그보다 복잡합니다. 또한 click 이벤트가'menu' 또는 그 자식 요소 중 하나에서 전파되지 않도록해야합니다. 그렇지 않으면 메뉴의 아무 곳이나 클릭해도 숨길 수 있습니다. –

0
document.addEventListener('mousedown', show_menu); 
1

여기에 기본적인 생각입니다. 사용자가 문서를 클릭하면 메뉴를 숨기고 이벤트 대상이 컨테이너 인 경우 이벤트 버블 링을 중지합니다. 또한 메뉴를 클릭하면 드롭 다운 메뉴가 표시됩니다.

var menu = document.getElementById('container'), list = document.getElementById('dropdown_menu'); 

document.addEventListener('click', function(){ 
    list.style.display = 'none'; 
}); 
menu.addEventListener('click', function(e){ 
    list.style.display = 'block'; 
    if(e && e.stopPropagation){ e.stopPropagation(); } 
    else { 
     e = window.event; 
     e.cancelBubble = true; 
    } 
}); 

JSFiddle

관련 문제