:: WARNING ::
.selector è stato deprecato dalla versione 1.7, rimossa dalla 1.9
L'oggetto jQuery ha una proprietà selector che ho visto ieri durante lo scavo nel suo codice. Non so se è definito nei documenti quanto sia affidabile (per prove future). Ma funziona!
$('*').selector // returns *
Modifica : se dovessi trovare il selettore all'interno dell'evento, tali informazioni dovrebbero idealmente far parte dell'evento stesso e non dell'elemento perché un elemento potrebbe avere più eventi di clic assegnati tramite vari selettori. Una soluzione potrebbe essere quella di utilizzare un wrapper per around bind(), click()ecc. Per aggiungere eventi invece di aggiungerlo direttamente.
jQuery.fn.addEvent = function(type, handler) {
this.bind(type, {'selector': this.selector}, handler);
};
Il selettore viene passato come proprietà di un oggetto denominata selector. Accedi comeevent.data.selector .
Proviamolo su qualche markup ( http://jsfiddle.net/DFh7z/ ):
<p class='info'>some text and <a>a link</a></p>
$('p a').addEvent('click', function(event) {
alert(event.data.selector); // p a
});
Dichiarazione di non responsabilità : ricorda che, proprio come per gli live()eventi, la proprietà selector potrebbe non essere valida se vengono utilizzati metodi di attraversamento DOM.
<div><a>a link</a></div>
Il codice seguente NON funzionerà, poiché livesi basa sulla proprietà selector che in questo caso è a.parent()- un selettore non valido.
$('a').parent().live(function() { alert('something'); });
Il nostro addEventmetodo verrà attivato, ma anche tu vedrai il selettore sbagliato - a.parent().