La seguente domanda è ispirata da this blog entry a ajaxian.com e this comment by paul irish.Perché l'espressione per live deve essere valutata in jQuery
Ecco un modo per dichiarare l'evento dal vivo.
$("li a").live(...)
Come per this blog entry, è la mia comprensione che vivono gli eventi non sono altro che un fermo tutto a livello di documento. Qualsiasi evento che bolle fino alla cima viene catturato da eventi dal vivo e se il selettore corrisponde, la funzione viene invocata.
E 'la mia comprensione che il documento pronto se invoco
$("li a").live('click', ..)
allora tutto jQuery dovrebbe fare è mettere il selettore letterale 'li a' in memoria da qualche parte. Ora, quando si verifica un clic e se quel clic bolle fino in cima allora live dovrebbe verificare qual è l'elemento di destinazione. Se l'elemento obiettivo soddisfa la regola di 'li a', la funzione dovrebbe essere attivata altrimenti ignorato questo evento ribollente.
Sulla base di tale presunzione sul documento pronto quando mi chiamo
$("li a").live('click', ..)
quindi idealmente jQuery non dovrebbe effettivamente andare alla ricerca di tutte l'elemento Matching 'li a' perché jquery non fa nulla con quegli elementi. So per certo che gli elementi attualmente presenti nel documento corrispondente a 'li a' non sono associati a nessun gestore di eventi.
Se tutto jQuery ha a che fare è quello di mettere il letterale 'li a' al livello principale del documento allora perché andare alla ricerca di elementi che corrispondono ai criteri 'li a' sul documento pronto. Ma sulla base del link al commento che ho citato all'inizio, sembra che jQuery in realtà vada alla ricerca di elementi pronti per il documento.
La mia domanda è perché il metodo live dovrebbe trovare tutti i metodi "li a" quando non ha intenzione di fare nulla con loro. Immagino che la sintassi live dovrebbe essere stata qualcosa come
$.live('li a', 'click', function(){})
Mi manca qualcosa qui?