2012-04-02 19 views
5

Come si può o non si può essere a conoscenza di jQuery 1.7, l'intero sistema di eventi è stato riscritto da zero. Il codebase è molto più veloce e con il nuovo metodo .on() c'è molta uniformità nel cablaggio dei gestori di eventi.come accedere ai dati interni di jquery?

quello usato per essere in grado di accedere ai dati di eventi interni ed investiate quali eventi sono registrati in un dato elemento, ma di recente questa informazione interna è stata nascosta in base alla seguente scenario ...

sembra che la I dati "privati" sono SEMPRE memorizzati sul .data (jQuery.expando) - Per "oggetti" in cui l'eliminazione dell'oggetto dovrebbe eliminare anche le sue cache questo ha un senso.

Nel regno dei nodi tuttavia, penso che dovremmo conservare questi membri "privati" in una cache separata (privato) in modo che non inquinano l'oggetto restituito da $ .fn.data()"

Anche se sono d'accordo con la modifica di cui sopra per nascondere i dati interni, ho trovato che l'accesso a queste informazioni può essere utile per il debug e il test dell'unità

Qual era il nuovo modo di ottenere l'oggetto evento jQuery interno in jQuery 1.7 ?

risposta

3

In jQuery 1.7, gli eventi vengono archiviati in una posizione alternativa accessibile tramite lointerno. Metodo(ma si noti che questo metodo è documentato come per uso interno solo nel codice sorgente, quindi usarlo a proprio rischio e essere pronti a farlo cambiare o scomparire nelle versioni future della libreria).

Per ottenere gli eventi registrati su un elemento, è possibile chiamare $._data() su quell'elemento ed esaminare la proprietà events dell'oggetto restituito. Ad esempio:

$("#yourElement").click(function() { 
    // ... 
}); 

console.log($._data($("#yourElement")[0]).events); 
Problemi correlati