2012-06-05 3 views
0

인라인 핸들러에서 이벤트를 가로 채고 전파를 중지하여 코드 처리기를 무시하려고합니다 (전파 불 활성화 코드 here에서 가져옴).js click event propogation을 중지 할 수없는 이유는 무엇입니까

다음 코드는 전파를 중지하지 않을뿐만 아니라 인라인 처리기를 실행하지 않습니다. 나는 틀린 것을 말할 수 없다.

바이올린 : http://jsfiddle.net/trKN4/3/

HTML :

<a onclick='stopIt(event);'>do it</a>​ 

JS : jsFiddle는 onload 핸들러에서 모든 코드를 포장하기 때문에

function disableEventPropagation(event) 
{ 
    if (event.stopPropagation){ 
     event.stopPropagation(); 
    } 
    else if(window.event){ 
     window.event.cancelBubble=true; 
    } 
} 

function stopIt(event) { 
    disableEventPropagation(event); 
    alert('dont do it'); 
} 


$(function() { 

    $('a').click(function(e){ 
     alert('im doing it'); 
    });     

}); 

답변

1

그것은 인라인 기능을 발사 아니에요 , 도달 범위에서 벗어나 핸들러.

왼쪽의 메뉴에서 no wrap 옵션을 선택하십시오.

DEMO는 :http://jsfiddle.net/trKN4/4/

enter image description here

+0

이 화재 - http://jsfiddle.net/trKN4/11/ – Yarin

+0

@Yarin propogation- 모두 경고를 중지하지 않습니다 : 그것은 전파를 중지 않습니다. 두 핸들러를 같은 요소에 두었으므로 어느 핸들러도 전파의 * 결과 *가 아닙니다. ''body ''에 jQuery 핸들러를 넣으면 작동하는 것을 볼 수 있습니다. http://jsfiddle.net/trKN4/12/ –

+0

알 겠어,하지만 지금은 혼란 스럽군요. 인라인이 아닌 핸들러가 이벤트를 수신하지 못하도록 취소/방지하는 적절한 방법은 뭔가요? – Yarin

관련 문제