2009-07-24 6 views
1

사용자가 웹 페이지 본문의 아무 곳이나 클릭 할 때 실행되는 코드가 있습니다. 클릭이 NON-LINK 인 경우 JavaScript 만 실행되기를 원합니다. 어떤 아이디어? 이벤트가 실행 위의 핸들러를 중지합니다 <body>에 도달하기 전에 모든 시도가 전파를 막을 수 있다는NON-LINK의 JavaScript onClick은 어떻게 실행합니까?

감사
마이크

답변

9
document.body.onclick = function(e){ 
    var target = e ? e.target : window.event.srcElement; 
    if (target.nodeName.toLowerCase() !== 'a') { 
     // Do something here... 
    } 
}; 

참고. 이를 피하기 위해 이벤트 캡처를 사용할 수 있습니다.

+0

이렇게 부를까요? ? 왜 마지막 괄호 뒤에 세미콜론이 있습니까? 감사! – Mike

+0

가변 감속이기 때문에 세미콜론이 있습니다. 그리고 아니요, 당신은 사건을 눈에 띄게 추가 할 필요가 없습니다; 위의 코드는 작동합니다 - BODY 내의 어딘가에 SCRIPT 태그에 넣으십시오. – James

+0

이것은 사이트 본체 (모든 이벤트)와 관련된 onclick 이벤트에서 호출되며, e는 요소로 전달됩니다. 이 블록을 할당하기 때문에 세미콜론이 있습니다. – fixmycode

0

document.body.onclick = function ...은 명령문입니다. 따라서 닫는 ';'

0

jQuery를 사용하십시오.

$(function() { 
    $("body").click(function() { /* your code here */ }); 
    $("a").click(function(e) { e.stopPropagation(); }); 
}); 

jQuery home.

+0

참고 : 스크립트가 HTML 헤드로 들어가고 jQuery 라이브러리에 대한 참조가 필요하며 "$ (function()"은 "$ (document) .ready (function()"의 줄임말입니다. jQuery 사이트에서 필요합니다. – lox

관련 문제