La domanda dice tutto. Quale è meglio e quando usare cosa, non uso mai jQuery live() poiché sto usando il plugin liveQuery per un paio d'anni, sono abituato e continuo a usarlo. Ma voglio sapere le sottili differenze tra i due e quando usare ognuno di essi?Qual è la differenza tra jQuery live() e il plugin liveQuery?
risposta
La funzione "live" nativa di jQuery sfrutta il bubbling degli eventi sul DOM. Il plugin "liveQuery", al contrario, usa il selettore per trovare gli elementi nel DOM e collegare direttamente i gestori di eventi.
A mio parere si è così meglio usare la funzione "live" quando possibile, perché si tratta di meno DOM traversal ecc, ad esempio, agganciando i gestori di eventi a cose durante un grande tavolo può essere di tipo-di slow con liveQuery ma non è affatto lento con "live". Potrebbero esserci alcuni problemi (con IE ovviamente) che ti costringono a usare liveQuery a volte, sebbene jQuery 1.4 abbia migliorato notevolmente "live".
modificare — Aggiornamento: Sep 2017
A questo punto, le versioni moderne di jQuery centralizzare registrazione gestore di eventi nel .on()
API. Brevemente:
$(selector).live("event-name", handler);
sarebbe oggi scritto con .on()
:
$(document).on("event-name", selector, handler);
Il .on()
API fornisce considerevolmente maggiore flessibilità rispetto al metodo lungo deprecato .live()
fatto, compresa la possibilità di utilizzare qualsiasi nodo nel DOM il punto di delega (come ha fatto il vecchio .delegate()
).
Il plug-in liveQuery è stato creato inizialmente, quindi è stato migrato a jQuery stesso.
Come Pointy said, live()
sfrutta il bubbling degli eventi sul DOM (delegazione di eventi). Inoltre, per ogni chiamata, jQuery chiama solo handler
sull'elemento $(event.target).closest(selector)
, ovvero l'elemento antenato-autore corrispondente più vicino dell'evento target. E, ovviamente, live()
non supporta nulla come livequery(matchedFn, unmatchedFn)
.
implicazioni:
$(selector).live()
richiede ancora un attraversamento del DOM (ovviamente). Tuttavia, se si carica jQuery e si collegano i gestori live() nella testata del documento, non esiste ancora un corpo del documento da cercare. Allo stesso modo se inserisci nuovi contenuti nella pagina.live()
fa meno lavoro quando viene configurato - non deve allegare i gestori ad ogni elemento abbinatolive()
fa più lavoro nella gestione di eventi - deve attraversare antenati del target dell'evento, trovando elementi che corrispondono il selettore$("div").live()
è diverso da$("div").livequery()
come funziona solo per la più vicinadiv
al destinatario dell'evento- Analogamente,
$("div, p").live()
è diverso da$("div").live(); $("p").live();
Una delle differenze è che .live() è nativo di jQuery (http://api.jquery.com/live/) e .livequery() è un plug-in. Come puoi vedere allo http://api.jquery.com/live/, .live() è stato ritirato in jQuery 1.7 e rimosso nella versione 1.9.
- 1. Qual è la differenza tra .delegate() e live()?
- 2. conversione livequery in live/delegate /?
- 3. Qual è la differenza tra Live IP e IP STATIC?
- 4. Qual è la differenza tra Aurelia Plugin e Feature?
- 5. Qual è la differenza tra plugin e libreria?
- 6. Qual è la differenza tra i metodi bind e live in jQuery?
- 7. Qual è la differenza tra $ e $$?
- 8. Qual è la differenza tra jQuery .val() e .attr ('valore')?
- 9. Qual è la differenza tra "$ variabile" e "variabile" - JavaScript - jQuery
- 10. jQuery: Qual è la differenza tra "$ (questo)" e "questo"?
- 11. Qual è la differenza tra Verilog! e ~?
- 12. qual è la differenza tra [[], []] e [[]] * 2
- 13. Qual è la differenza tra `##` e `hashCode`?
- 14. Qual è la differenza tra? : e ||
- 15. qual è la differenza tra:.! e: r !?
- 16. Qual è la differenza tra ("") e (null)
- 17. Qual è la differenza tra = e: =
- 18. Qual è la differenza tra dict() e {}?
- 19. Qual è la differenza tra " " e ""?
- 20. Qual è la differenza tra {0} e ""?
- 21. Qual è la differenza tra {0} e +?
- 22. Qual è la differenza tra .ToString() e + ""
- 23. Qual è la differenza tra maven-rpm-plugin e rpm-maven-plugin
- 24. Qual è la differenza tra il callback e la promessa
- 25. Qual è la differenza tra la cartella vim72 e vimfiles?
- 26. Qual è la differenza tra queste funzioni?
- 27. Tomcat Maven plugin - qual è la differenza tra il run-guerra e run-guerra-sola
- 28. Qual è la differenza tra il plug Findbugs-IDEA e QAPlug - plugin Findbugs in IntellijJ IDEA
- 29. Qual è la differenza tra "jquery.min.css" e "jquery.css"?
- 30. Qual è la differenza tra la funzione() {}() e function() {}()
Se la tabella è già nel documento quando viene chiamato live(), ci sarà ancora un attraversamento DOM. per esempio. $ ("td"). live() trova ancora ogni elemento td. –
C'è anche '.delegate()' e questa è un'API molto più intelligente in generale. – Pointy
Se "live" è nativo di jQuery e "liveQuery" è un plug-in, preferirei utilizzare "live" perché quando si tenta di eseguire l'aggiornamento a una versione più recente di jQuery, potrebbe essere un lavoro extra e problemi durante l'aggiornamento "liveQuery" e assicurandosi che tutto sia compatibile. –