.live()
exige que vous exécutiez le sélecteur immédiatement, à moins que vous n'utilisiez le résultat, c'est du gaspillage. Le gestionnaire d'événement ici est attaché à document
Il faut donc vérifier tous les événements de ce type provenant de tout élément qui bouillonne. Voici un exemple d'utilisation :
$(".myClass").live("click", function() { alert("Hi"); });
Notez que la déclaration $(".myClass")
exécuté ce sélecteur pour trouver tous les éléments avec cette classe même si nous ne nous soucions pas d'eux nous avons tous recherché était la chaîne ".myClass"
pour correspondre plus tard quand click
les événements s'accumulent jusqu'à document
.
.delegate()
utilise effectivement .live()
en interne, mais avec un contexte. Le sélecteur est no s'exécutent immédiatement, donc c'est déjà plus efficace, et il ne s'attache pas à document
(bien qu'il le puisse), c'est beaucoup plus local... et tous ces autre Les événements provenant d'autres arbres d'éléments dont vous ne vous souciez pas ne sont même pas vérifiés lors de la création de bulles... encore une fois plus efficace. Voici un exemple d'utilisation :
$("#myTable").delegate("td", "click", function() { alert("Hi"); });
Que s'est-il passé ici ? Nous avons couru $("#myTable")
pour obtenir l'élément auquel se rattacher (certes plus coûteux que les document
mais nous sommes en utilisant le résultat. Ensuite, nous attachons un gestionnaire d'événements à cet élément (ou à ces éléments dans d'autres cas). Seulement clicks
de sur de cet élément sont vérifiés par rapport à la "td"
lorsqu'ils se produisent, et non à partir de partout comme .live()
(puisque tout est à l'intérieur document
).