2012-02-03 2 views
2

페이지 배경 (#page)을 클릭 할 때 이벤트 (예 : 떠 다니는 장바구니 숨기기)를 트리거해야하지만이 이벤트는 콘텐츠 내부를 클릭 할 때 발생하지 않아야합니다. 따라서이 이벤트가 공간에서 발생해야합니다 (페이지 마이너스 콘텐츠). 그것을 어떻게 성취합니까? 감사합니다상위 본부에서 셀렉터 제외

나는이 구조가있는 경우 : 당신이 이벤트의 대상을 확인하고 행동 할 수

<body> 
<div id="page"> 
    <div id="content"> 
    here 
    </div> 
</div> 
</body> 

var outer= jQuery("#page"); 
jQuery(outer).click(function(){ 
    jQuery(cos_de_cumparare).toggle(); 
}); 

답변

2

을 따라

var outer= jQuery("#page"); 
outer.click(function(e){ 
     //trigger the event only if the target of the click is the page 
     if(e.target.id === 'page'){ 
     alert('click'); 
     } 
}); 

http://jsfiddle.net/wNsd7/

+0

테스트 한 결과 가장 세련된 해결책 인 것 같습니다. 여러분 모두에게 감사드립니다. 감사합니다 – Kandinski

1

이 작업을 수행하려면 여기 바이올린은 당신을 중지 할 수 있습니다 이벤트가 체인 위로 전파됩니다.

이 작업을 수행하는 일반적인 방법은 자식 요소에 클릭 이벤트를 붙이는으로부터 전파를 중지하는 것입니다 거기에 그런 :

$("#page div").click(function(e){ 
    e.stopPropagation(); 
}) 

Here's an example

+0

아니,이게 그가하려고하는 것과 아무 상관이 없다고 생각합니다 –

+0

나는 정중하게 동의하지 않습니다 :) –

+0

아, 좋아, 다른 중독에서 그걸 의도 했어요! 이것은 확실히 작동하지만 이벤트 위임에 문제를 일으킬 수 있습니다. :) –

1

이 시도하고 확인 http://jsfiddle.net/qgUjb/4/

$("#page").click(function(event) { 
    if(event.target.id == "content") return; 
    $("#content").toggle(); 
});