$("*").click(function(){
$(this); // how can I get selector from $(this) ?
});
¿Existe una forma fácil de obtener el selector$(this)
? Hay una forma de seleccionar un elemento por su selector, pero ¿qué hay de obtener el selector del elemento ?
Respuestas:
De acuerdo, en un comentario anterior, el autor de la pregunta
Fidilip
dijo que lo que realmente busca es obtener la ruta al elemento actual.Aquí hay un script que va a "subir" el árbol DOM antepasado y luego construir selector bastante específico incluyendo cualquier
id
oclass
atributos en el elemento ha hecho clic.Véalo funcionando en jsFiddle: http://jsfiddle.net/Jkj2n/209/
Por ejemplo, si hiciera clic en el segundo elemento de la lista anidada de la lista en el HTML a continuación, obtendría el siguiente resultado:
HTML>BODY>UL>LI>UL>LI#sub2.subitem.otherclass
fuente
join(" > ");
, me dará los hijos inmediatos y, por lo tanto, una ruta más estricta .::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!
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.El selector se pasa como propiedad de un objeto con nombre
selector
. Acceda a él comoevent.data.selector
.Probémoslo con algunas marcas ( http://jsfiddle.net/DFh7z/ ):
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.El siguiente código NO funcionará, ya que se
live
basa en la propiedad del selector, que en este caso esa.parent()
un selector no válido.Nuestro
addEvent
método se activará, pero usted también verá el selector incorrecto -a.parent()
.fuente
No Such jQuery Method Exists
En colaboración con @drzaus, hemos creado el siguiente complemento jQuery.
jQuery.getSelector
JavaScript reducido
Uso y errores
Fiddle w / QUnit tests
http://jsfiddle.net/CALY5/5/
fuente
$.map
* delimitador opcional (necesita eliminar los nombres de etiquetas vacíos extraños) * ¿no necesitas verificarhasOwnProperty
unforeach
bucle para estar seguro?' > '
no sea haría que no devolviera el selector del elemento.¿Intentaste esto?
fuente
*
selector, ¡es muy lento!Lancé un complemento de jQuery: jQuery Selectorator , puedes obtener un selector como este.
fuente
Prueba esto:
fuente
Simplemente agregue una capa sobre la función $ de esta manera:
Ahora puedes hacer cosas como
y devolverá "a" incluso en las versiones más recientes de jQuery.fuente
http://www.selectorgadget.com/ es un bookmarklet diseñado explícitamente para este caso de uso.
Dicho esto, estoy de acuerdo con la mayoría de las personas en que debería aprender los selectores de CSS usted mismo, intentar generarlos con código no es sostenible. :)
fuente
Agregué algunas correcciones a la corrección de @ jessegavin.
Esto volverá de inmediato si hay una ID en el elemento. También agregué una verificación de atributo de nombre y un selector de n-ésimo niño en caso de que un elemento no tenga identificación, clase o nombre.
Es posible que el nombre necesite un alcance en caso de que haya varios formularios en la página y tengan entradas similares, pero aún no lo manejé.
fuente
Obtuve múltiples elementos incluso después de las soluciones anteriores, así que extendí el trabajo de dds1024, para aún más elementos dom que señalan.
p. ej. DIV: nth-child (1) DIV: nth-child (3) DIV: nth-child (1) ARTÍCULO: nth-child (1) DIV: nth-child (1) DIV: nth-child (8) DIV : nth-child (2) DIV: nth-child (1) DIV: nth-child (2) DIV: nth-child (1) H4: nth-child (2)
Código:
fuente
Esto puede obtener la ruta del selector del elemento HTML en el que se hizo clic.
fuente
Bueno, escribí este sencillo complemento de jQuery.
Esto verifica la identificación o el nombre de la clase, e intenta dar el selector más exacto posible.
fuente
¿Está intentando obtener el nombre de la etiqueta actual en la que se hizo clic?
Si es así, haz esto ...
Realmente no puede obtener el "selector", el "selector" en su caso es
*
.fuente
Código Javascript para el mismo, en caso de que alguien lo necesite, como yo lo necesitaba. Esta es solo la traducción solo de la respuesta seleccionada anteriormente.
fuente
Teniendo en cuenta algunas respuestas leídas aquí, me gustaría proponer esto:
¿Quizás sea útil para crear un complemento jQuery?
fuente
¡Gracias p1nox!
Mi problema era volver a centrarme en una llamada ajax que estaba modificando parte del formulario.
Solo necesitaba encapsular su función en un complemento jQuery:
fuente
Esto no le mostrará la ruta DOM, pero generará una representación de cadena de lo que ve, por ejemplo, en el depurador de Chrome, al ver un objeto.
https://developer.chrome.com/devtools/docs/console-api#consolelogobject-object
fuente
Qué tal si:
No creo que jQuery almacene el texto del selector que se usó. Después de todo, ¿cómo funcionaría eso si hicieras algo como esto?
fuente
$('div').find('a').selector
esdiv a
. Si los eventos no se crean a través de las funciones de jQuery, sino un contenedor, creo que el selector podría pasarse como argumentos de datos al controlador de eventos.La mejor respuesta seria
fuente