::ADVERTENCIA::
.selector ha quedado obsoleto a partir de la versión 1.7, eliminado a partir de 1.9
El objeto jQuery tiene una propiedad de selector que vi cuando indagué en su código ayer. No sé si está definido en los documentos, es qué tan confiable es (para pruebas futuras). ¡Pero funciona!
$('*').selector // returns *
Editar : si encontrara el selector dentro del evento, esa información idealmente debería ser parte del evento en sí y no el elemento porque un elemento podría tener múltiples eventos de clic asignados a través de varios selectores. Una solución sería usar un contenedor para alrededor bind()
, click()
etc. para agregar eventos en lugar de agregarlos directamente.
jQuery.fn.addEvent = function(type, handler) {
this.bind(type, {'selector': this.selector}, handler);
};
El selector se pasa como propiedad de un objeto con nombre selector
. Acceda a él como event.data.selector
.
Probémoslo con algunas marcas ( 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
});
Descargo de responsabilidad : recuerde que, al igual que con los live()
eventos, la propiedad del selector puede no ser válida si se utilizan métodos de recorrido DOM.
<div><a>a link</a></div>
El siguiente código NO funcionará, ya que se live
basa en la propiedad del selector, que en este caso es a.parent()
un selector no válido.
$('a').parent().live(function() { alert('something'); });
Nuestro addEvent
método se activará, pero usted también verá el selector incorrecto - a.parent()
.