Wie funktioniert jQuery .live ()?

8

Ich habe über die Leistung in Bezug auf

nachgedacht

.click() gegen .live("click")

und das hat mich darüber nachdenken lassen, wie .live funktioniert.

Überwacht es DOM-Änderungen und wenn es eine Änderung im DOM erkennt, fügt es nur das Ereignis an, verwendet dann irgendeine Art von Timer (ich würde nicht denken, aber wenn es das tat, ist das sehr wichtig, machen Timer ich eine traurige Person)

    
bevacqua 23.07.2011, 14:38
quelle

5 Antworten

12

live bindet das Ereignis click an das Element document des DOMs. Wenn Browserereignisse durch die DOM-Struktur aufsteigen, wird das Klickereignis für alle übereinstimmenden Elemente ausgelöst.

Hier ist ein guter Artikel, der alles erklärt.

Ссылка

    
Geoff Appleford 23.07.2011, 14:44
quelle
2

.live fügt keine Ereignisse an jedes Element im Dom an, selbst wenn sich der Dom ändert. Er überwacht das Ereignis für das Stammelement wie den Körper oder einen Container, an dem das Live angehängt ist. Sobald das Ereignis im inneren Level-Element ausgelöst wird, sucht es nach dem Ziel und stimmt mit dem im Live angegebenen Selektor überein und wenn es übereinstimmt, wird dieses Event ausgelöst.

    
ShankarSangoli 23.07.2011 14:42
quelle
2

Aus dem jQuery-Handbuch zu .live () :

  

Die .live () -Methode kann Elemente beeinflussen, die noch nicht vorhanden sind   hinzugefügt zum DOM durch die Verwendung von Event-Delegation: ein Handler gebunden   zu einem Vorfahrenelement ist verantwortlich für Ereignisse, die ausgelöst werden   seine Nachkommen. Der Handler, der an .live () übergeben wird, ist niemals an ein gebunden   Element; Stattdessen bindet .live () einen speziellen Handler an den Stamm des   DOM Baum.

Wie Sie sehen, ist kein Timer beteiligt.

    
fromvega 23.07.2011 14:43
quelle
0

Wenn Sie Elemente dynamisch zum DOM hinzufügen und möchten, dass der Click-Handler auf sie angewendet wird, müssen Sie live oder delegate verwenden, aber wenn Sie nicht einfach click

verwenden     
Rafay 23.07.2011 14:41
quelle

Tags und Links