2014-07-05 14 views
16

Sono nuovo di jQuery e sto cercando di capire il concetto di catturare e gorgogliare.Catturare e gorgogliare usando jQuery

Ho letto molti articoli, ma molti hanno descritto la propagazione di eventi per Javascript.

lascia supporre che abbiamo il seguente codice HTML:

<div id="outter"> 

     outter 

     <div id="inner"> 

       inner 
     </div> 

</div> 

cattura è la fase in cui scendiamo gli elementi DOM e spumeggiante è quando andiamo in su.

in JavaScript è possibile decidere quale strada da seguire (utilizzando parametri vere o false):

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

C'è qualcosa di simile per jQuery per indicare in quale direzione da seguire altro che il modo in JavaScript?

jQuery utilizza anche una fase predefinita? Per esempio bolla?

perché ho usato il seguente codice per verificare questo:

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> 

Sembra che quando clicco sul div outter, solo quel div si anima in un div più grande. Quando clicco sulla div interna, entrambe le div animano le div più grandi.

Non so se ho torto, ma questo test mostra che il metodo di propagazione del browser predefinito è bubble.

Per favore correggimi se sbaglio.

+0

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

+0

sì, si è giusto per impostazione predefinita bolle di eventi fino al DOM –

+0

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

risposta

36

jQuery utilizza il bubbling degli eventi. Se si desidera aggiungere un gestore di eventi che utilizza il modello di cattura, è necessario farlo esplicitamente utilizzando addEventListener. Event capturing jQuery mostra come puoi farlo usando i selettori jQuery.

+0

Grazie Barmar, la tua risposta chiarisce le cose per me! – christostsang

+0

Il link fornito non è corretto. L'evento si aggancia ancora dopo l'inizio della fase di gorgogliamento. – Offenso

Problemi correlati