2011-07-05 3 views
-1

부모와 자식 사이의 문제 DIV. 하위 div를 클릭하면 부모 div와 동일하게 표시됩니다. 자식 div가 부모 div 작업을 따르지 않기를 바래요. 내가 시도 stopPropagation() 작동하지 않거나 아마도 혼란 스러워요.stopPropagation(); 이 자식의 최상위에서 멈추지 않는 일 div

html 코드 :

<div class="innerbox"> 
<div id="button"></div> 
</div> 

jQuery를 코드 :

<script type="text/javascript"> 
//<![CDATA[ 
function ShowHide(d){ 
    $("div#button").click(function(e) { 
     e.stopPropagation(); 
     return; 
    }); 

    //$(".innerbox").click(function(e) { 
     jQuery(d).animate({"height": "toggle"}, { 
      duration: 500, 
      complete: function() { 
       //add action after complete action... 
      } 
     }); 
    //}); 
} 
//]]> 
</script> 
+0

부분적인 코드가 주어 졌을 때 당신이 무엇을하고 있는지 명확하게 알 수는 없지만, 저에게는 잘 작동합니다 : http://jsfiddle.net/fkling/gcpnc/ –

+0

'$ (". innerbox"). 클릭 (''주석 처리를해야합니까? ') –

+1

질문이 명확하지 않습니다. 편집하고 명확하게 할 수 있습니까? "생각해보십시오." "innerbox" "#button"div가 애니메이션으로 나타나기를 원하지 않는다면 "#button"div를 "innerbox"div 밖으로 이동시켜야합니다. 자식 요소가 부모 요소의 애니메이션에 의해 영향을 받으므로 –

답변

1

는 ".innerbox"div을 클릭하면, 당신이 그것을 애니메이션을 적용 할 것을 saing 높은 것,하지만 당신은 돈이 ' "#button"div에 애니메이션을 적용하려면 ".button"div을 ".innerbox"div 밖으로 이동시켜야합니다. 자식 요소는 부모의 애니메이션에 의해 영향을 받으므로

stopPropagation은 이벤트 자체가 조상 요소로 물결 치는 것이지 당신이하는 일의 영향이 아닙니다. 확실히이 경우 click 이벤트가 중지되고 ".innerbox"div으로 전송되지 않습니다.


이것은 주제와 관련이 없을 수 있지만 ShowHide으로 전화하는 방법은 무엇입니까? 함수 내에서 이벤트 처리기를 연결하기 때문에; ShowHide에 전화 할 때마다 새 처리기가 에 첨부됩니다. 나는 그게 당신이 원하는 것 같지 않아요 ...

+0

나는 당신의 지시에 따르는 선택의 여지가 없습니다. 감사. – user453089