2012-01-02 3 views
2

div에 클릭 이벤트가 바인딩되어 있습니다. 이 div 안에 anchor 태그를 추가하여 div 클릭 동작을 트리거하지 않습니다. 앵커에 'onclick="return false;"'을 넣으려고 시도했지만 여전히 div를 클릭하면 트리거됩니다. 이 트릭이 있습니까?div 이벤트를 트리거하지 않고 div 내에서 앵커를 처리하려면 어떻게해야합니까?

+0

클릭 처리기를 div 요소에 바인딩하는 방법은 무엇입니까? –

+0

jquery .click 메서드를 사용하고 있습니다 – coder

+0

가능한 [인라인 onclick 특성을 사용하여 이벤트 전파를 중지하는 방법?] (http://stackoverflow.com/questions/387736/how-to-stop-event-propagation-with) -inline-onclick-attribute) – Purag

답변

2

는 jQuery의 click(), 당신이 할 수있는 사용하고 있음을 감안할 때 :

$('div').click(
    function(e){ 
     if (e.target.tagName == 'A') { 
      return false; // do nothing if the click is on the a element 
     } 
     else { 
      // do something else 
     } 
    }); 

또는를 :

$('a').click(
    function(e){ 
     e.stopPropagation(); // stops the click moving up to the parent elements 
    }); 
1

하면 이벤트가 버블 링 방지해야 그것을 방지하기 위해. w3c 브라우저가없는 경우 stopPropagation이있는 다른 방법으로 cancelBubble 속성이 있습니다.

한 가지 스타일로 이벤트를 설정하는 것이 좋습니다. 이 경우 jquery는 모든 브라우저에서 한 방향으로 버블 링하는 것을 방지하기 위해 event.stopPropagationevent.stopImmediatePropagation 가지 방법이 있습니다.

관련 문제