J'ai plusieurs éléments sur une page HTML qui ont la même classe - mais ce sont des types d'éléments différents. Je veux trouver le nom de balise de l'élément lorsque je boucle dessus - mais .attr ne prend pas "tag" ou "tagname".
Voilà ce que je veux dire. Considérez 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 exécuter quelque chose comme ça pour m'assurer que mes éléments ont tous un identifiant si l'un 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 les éléments H2 et H4 auraient alors un identifiant de
rndh2_1
rndh4_3
respectivement.
Des idées sur la façon dont je peux découvrir le nom de balise de l'élément représenté par "ceci"?
javascript
jquery
BigPigVT
la source
la source
Réponses:
devrait être
la source
Vous pouvez essayer ceci:
Consultez la documentation pour en savoir plus sur is ().
la source
nodeName
renvoie une chaîne qui, selon le navigateur, est en majuscule ou non.is('*')
depuis des années. Cela ne répondra probablement pas à l'OP mais cela a fonctionné pour moi, merci, @middus!Depuis que j'ai posé cette question une fois auparavant et que cela ne m'a pas aidé dans mon cas (je n'avais pas
this
, mais j'avais plutôt une instance de sélecteur jQuery). L'appelget()
vous donnera l'élément HTML, par lequel vous pouvez obtenir lenodeName
comme mentionné ci-dessus.ou
la source
Vous pouvez également utiliser
$(this).prop('tagName');
si vous utilisez jQuery 1.6 ou supérieur.la source
Oui. Vous pouvez utiliser le code ci-dessous:
la source
Je pense que vous ne pouvez pas utiliser le
nodeName
dans jQuery car nodeName est une propriété DOM et jQuery lui-même n'a ninodeName
fonction ni propriété. Mais sur la base du répondant qui a mentionné pour la première fois cenodeName
genre de choses, voici comment j'ai pu résoudre le problème:REMARQUE:
this
voici un objet jQuery.la source
Comme il s'agit d'une question que vous venez sur google en utilisant le premier enfant de jquery tagname comme requête, je posterai un autre exemple:
Le résultat jquery est une variable (majuscule): P
la source
Vous pouvez obtenir le nom de la balise d'élément html sur toute la page.
Vous pouvez utiliser:
la source
note: remplacez-le par votre sélecteur (h1, h3 ou ...)
la source
Je viens de l'écrire pour un autre numéro et j'ai pensé que cela pourrait également vous aider.
Usage:
onclick="_DOM_Trackr(this);"
Paramètres:
Code source:
la source
html > body > div#coreApp > div#productpage > div#productpage-wrapper > div > div > div > div > div#pthumb12 > form#thumb_uploader_src > input
$('*').each(function(_i,_e){$(_e).attr('title',_DOM_Trackr(_e,true));});
La meilleure façon de résoudre votre problème est de remplacer
$(this).attr("tag")
parthis.nodeName.toLowerCase()
ou parthis.tagName.toLowerCase()
.Les deux produisent exactement le même résultat!
la source
Considérez la méthode rapide FILTER :
Retour:
alors:
la source
Au lieu de cela, faites simplement:
la source