117 votes

Peut jQuery fournir le nom de la balise?

J'ai plusieurs éléments sur une page HTML qui ont la même classe, mais ils sont de différents types d'éléments. Je veux savoir le nom de la balise de l'élément que je boucle sur eux - mais .attr ne prend pas de "tag" ou "tagname".

Voici ce que je veux dire. Tenir compte de ces éléments sur une page:

<h1 class="rnd">First</h1>
<h2 id="foo" class="rnd">Second</h2>
<h3 class="rnd">Third</h3>
<h4 id="bar" class="rnd">Fourth</h4>

Maintenant, je veux faire quelque chose de ce genre pour s'assurer que mes éléments ont tous un id si l'on n'était pas déjà défini:

$(function() {
  $(".rnd").each(function(i) {
    var id = $(this).attr("id");
    if (id === undefined || id.length === 0) {
      // this is the line that's giving me problems.
      // .attr("tag") returns undefined
      $(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());
    }
  });
});

Le résultat que je voudrais serait que le H2 et H4 éléments pourrait avoir une id de

rndh2_1
rndh4_3

respectivement.

Des idées sur comment je peut découvrir le nom de la balise de l'élément représenté par "cela"?

166voto

middus Points 7613

Vous pouvez essayer ceci:

if($(this).is('h1')){
  doStuff();
}

Voir les docs pour en savoir plus sur est().

110voto

Wabbitseason Points 2655
$(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());

devrait être

$(this).attr("id", "rnd" + this.nodeName.toLowerCase() + "_" + i.toString());

53voto

Scott Kirkwood Points 967

Depuis que j'ai touché à cette question, une fois avant et ça ne m'aide pas dans mon cas (je n'ai pas de this, mais avait plutôt un sélecteur jQuery exemple). Appelant get() , vous obtiendrez l'élément HTML qui vous permet d'obtenir l' nodeName comme mentionné ci-dessus.

this.nodeName; // In a event handler, 'this' is usually the element the event is called on

ou

$('.hello:first-child').get(0).nodeName; // Use 'get' or simply access the jQuery Object like an array
$('.hello:first-child')[0].nodeName;     // will get you the original DOM element object

47voto

Bijay Rungta Points 675

Vous pouvez également utiliser $(this).prop('tagName'); si vous utilisez jQuery 1.6 ou supérieur.

4voto

fernando Points 99

Oui. Vous pouvez utiliser le code ci-dessous:

this.tagName

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X