Utilisez jQuery / Javascript pour créer une liste de tous les éléments d’un ensemble

Je souhaite utiliser Javascript pour parcourir en boucle un ensemble d’éléments et créer une liste d’étiquettes pour chacun d’entre eux. Par conséquent, si l’ensemble d’éléments était comme suit:

Title

Subheading

Paragraph of text...

Cela me donnerait ce qui suit:

 
  1. h1
  2. h2
  3. p

Est-il possible pour jQuery / Javascript de renvoyer le type d’un élément sous forme de chaîne, et si oui, comment pourrais-je m’y prendre?

C’est loin d’être le morceau de code le plus propre que j’ai jamais créé, mais ça marche:

 function generateList(rootElement) { var rootElementItem = $("
  • " + rootElement.get(0).tagName + "
  • "); if (rootElement.children().size() > 0) { var list = $("
      "); rootElement.children().each(function() { list.append(generateList($(this))); }); rootElementItem.append(list); } return rootElementItem; } var listOfElements = generateList($("body")); $("body").append($("
        ").append(listOfElements));

        Démo: http://jsfiddle.net/jonathon/JvQKz/

        Il s’appuie sur la réponse this.tagName qui a été donnée précédemment, mais il vérifie également la this.tagName d’enfants. De cette façon, il construira une vue hiérarchique de l’élément donné. La méthode ne génère pas la

          englobante, elle ne peut donc être ajoutée qu’à une balise existante.

          J’espère que cette solution simple aide: http://jsfiddle.net/neopreneur/n7xJC/

          -html-

           

          Title

          Subheading

          Paragraph of text...

          -js-

           $(function(){ $('body *').each(function(){ // append a 'ol' to body in order to output all tag names if(!$(this).parents('body').find('ol').length){ $('body').append('
            '); } // output the name of the tag (list item) $('ol').append('
          1. ' + this.tagName.toLowerCase() + '
          2. '); }); });

            Cela fonctionne si vous avez un document HTML correctement formé avec une balise body.

            Exemple

             $('
              ').append(function(index, html){ var ret = $(''); $('body>*').each(function(i, el) { ret.append( $('
            1. ').html(this.tagName.toLowerCase()) ); }); return ret.html(); }).appendTo('body');