2014-07-05 12 views
16

Ich bin neu in jQuery und ich versuche, das Konzept der Erfassung und Sprudeln zu verstehen.Capturing und Sprudeln mit jQuery

Ich habe viele Artikel gelesen, aber die meisten von ihnen beschrieben Ereignisausbreitung für Javascript.

Hier können wir die folgenden HTML-Code übernehmen haben:

<div id="outter"> 

     outter 

     <div id="inner"> 

       inner 
     </div> 

</div> 

Capturing ist die Phase, wo wir die DOM-Elemente gehen und sprudelnden ist, wenn wir nach oben.

In Javascript können Sie entscheiden, welche Art und Weise zu folgen (wahr oder falsch-Parametern):

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

Gibt es etwas ähnliches für jQuery zu bezeichnen, welchen Weg andere zu folgen als die JavaScript Art und Weise?

Verwendet jQuery auch eine Standardphase? Zum Beispiel Blase?

Weil ich verwenden, um den folgenden Code, um dies zu testen:

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> 

Es scheint, dass, wenn ich auf der äußeren div klicken, werden nur das div animiert zu einem größeren div. Wenn ich auf das innere div klicke, werden beide divs zu größeren divs animiert.

Ich weiß nicht, wenn ich falsch liege, aber dieser Test zeigt, dass die Standard-Browser-Propagationsmethode Blase ist.

Bitte korrigieren Sie mich, wenn ich falsch liege.

+0

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

+0

Ja, Sie sind per default standardmäßig Ereignisblasen bis zum DOM –

+0

dupe von http://StackOverflow.com/Questions/7398290/unable-to-understand -usecapture-Attribut-in-addEventListener – adeneo

Antwort

36

jQuery verwendet Event-Bubbling. Wenn Sie einen Event-Handler hinzufügen möchten, die die Erfassung Modell verwendet, müssen Sie es explizit tun addEventListener verwenden. Event capturing jQuery zeigt, wie Sie dies mit jQuery Selektoren tun können.

+0

Dank Barmar, deine Antwort löscht Dinge für mich! – christostsang

+0

Der angegebene Link ist nicht korrekt. Das Ereignis hält immer noch an, nachdem die Blasenbildungsphase begonnen hat. – Offenso