2011-07-05 56 views
-1

父母與子女DIV之間的問題。當你點擊子div時會顯示與父div相同的內容。我希望孩子div不遵循父div行動。我試過stopPropagation()不工作,或者可能會混淆。stopPropagation(); does not work to stop top of this child 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」)。click('應該被註釋掉嗎? –

+1

這個問題還不清楚,你可以編輯和澄清嗎?我想*你想說當「innerbox」'div'點擊,你想爲它設置動畫效果,但你不想讓「#button」div動畫。如果是這樣,你必須將「#button」div從「innerbox」div中移出,因爲子元素將受到其父級動畫的影響 –

回答

1

如果你saing在單擊 「.innerbox」 div時,要進行動畫處理它,但你不如果想要將「#button」div動畫化,則必須將「#button」div移出「.innerbox」div,因爲子元素將受其父級動畫的影響。

stopPropagation是關於停止事件本身冒泡到祖先元素,而不是你所做的事情的影響。當然在這種情況下,click事件正在停止並且不會發送到「.innerbox」div


這可能是題外話,但是當/你怎麼罵ShowHide?因爲你在函數中掛接了一個事件處理程序;每當您撥打ShowHide時,將附加一個新的處理程序。我不認爲這可能是你想要的...

+0

以及我沒有選擇按照你的指示。謝謝。 – user453089