Renvoyer le chemin complet à un élément?

Je cherche un moyen de trouver le chemin complet d’un élément en un clic.

Par exemple, disons que j’ai ce code HTML:

  • item 1
  • item 2
  • item 1
  • item 2

Je veux pouvoir renvoyer le chemin (je ne sais pas comment l’appeler) à l’élément cliqué. alert () fera pour le moment.

Disons que j’ai cliqué sur le deuxième élément li dans la deuxième div. Je voudrais un rappel de:

 div:eq(1) li:eq(1) 

Si je cliquais sur le premier élément li de la première div, ce serait:

 div:eq(0) li:eq(0) 

Comment je ferais ça?

Existe-t-il un plugin capable de le faire ou aurais-je besoin de le créer à partir de rien pour obtenir l’index de l’élément dans le chemin?

Merci 🙂

Voici comment vous pouvez reconstruire le chemin complet:

 var q = $(this) .parentsUntil('body') .andSelf() .map(function() { return this.nodeName + ':eq(' + $(this).index() + ')'; }).get().join('>'); 

Inspiré par cette réponse .

Si vous voulez l’approche du plugin:

 (function($){ $.fn.extend({ getFullPath: function(stopAtBody){ stopAtBody = stopAtBody || false; function traverseUp(el){ var result = el.tagName + ':eq(' + $(el).index() + ')', pare = $(el).parent()[0]; if (pare.tagName !== undefined && (!stopAtBody || pare.tagName !== 'BODY')){ result = [traverseUp(pare), result].join(' '); } return result; }; return this.length > 0 ? traverseUp(this[0]) : ''; } }); })(jQuery); 

Spécifiez un sélecteur ou un object pour jQuery et il obtiendra son chemin complet. stopAtBody est facultatif, mais s’il est stopAtBody comme true, il ne stopAtBody que la (ce qui en fait un sélecteur jQuery valide).

DEMO (Cliquez sur le LI pour voir son chemin révélé)

.Parents()

cela ferait-il?

Avez-vous lu sur la fonction parents ()? http://api.jquery.com/parents/

Vous pouvez obtenir quelque chose comme ça

Mes parents sont: SPAN, P, DIV, CORPS, HTML