2014-07-05 44 views
16

我是jQuery的新手,我試圖理解捕獲和冒泡的概念。使用jQuery捕獲和冒泡

我已閱讀了大量文章,但其中大多數描述了Javascript的事件傳播。

讓我們假設我們有以下的HTML代碼:

<div id="outter"> 

     outter 

     <div id="inner"> 

       inner 
     </div> 

</div> 

捕捉是我們往下走的DOM元素和起泡是當我們去了相位。

在Javascript中,你可以決定(使用true或false參數)要跟蹤的方式:

element.addEventListener('click',doSomething,true) --> capture phase 
element.addEventListener('click',doSomething,false) --> bubble phase 

有什麼相似的jQuery表示比JavaScript的方式來遵循的方式與其他?

jQuery使用默認階段嗎?例如泡沫?

因爲我用下面的代碼來測試:

CSS

<style> 

    div { 
      border: 1px solid green; 
      width: 200px; 

     } 

</style> 

jQuery的

<script> 

    $(document).ready(function(){ 

     $('div').click(function(){ 
      $(this).animate({'width':'+=10px'},{duration: 3000}) 
     }); 

    }); 

</script> 

看來,當我點擊outter DIV,只該div動畫到一個更大的div。當我點擊內部div div divs動畫更大的div。

我不知道我是否錯了,但是這個測試表明默認的瀏覽器傳播方法是泡泡。

如果我錯了,請糾正我。

+0

http://api.jquery.com/event.stoppropagation/ – Satpal

+0

是的,你是正確的事件氣泡達到DOM –

+0

愚蠢http://stackoverflow.com/questions/7398290/unable-to-understand -usecapture-attribute-in-addeventlistener – adeneo

回答

36

jQuery使用事件冒泡。如果您想添加使用捕獲模型的事件處理程序,則必須明確使用addEventListenerEvent capturing jQuery顯示瞭如何使用jQuery選擇器來做到這一點。

+0

謝謝Barmar,你的回答爲我清除了一切! – christostsang

+0

提供的鏈接有誤。冒泡階段開始後,事件仍然存在。 – Offenso