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)
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.
.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.
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.
Tags und Links jquery