Existe-t-il un moyen simple d'obtenir un nom de tag?
Par exemple, si on me donne $('a')une fonction, je veux l'obtenir 'a'.
Existe-t-il un moyen simple d'obtenir un nom de tag?
Par exemple, si on me donne $('a')une fonction, je veux l'obtenir 'a'.
Réponses:
Vous pouvez appeler .prop("tagName"). Exemples:
jQuery("<a>").prop("tagName"); //==> "A"
jQuery("<h1>").prop("tagName"); //==> "H1"
jQuery("<coolTagName999>").prop("tagName"); //==> "COOLTAGNAME999"
Si l'écriture .prop("tagName")est fastidieuse, vous pouvez créer une fonction personnalisée comme ceci:
jQuery.fn.tagName = function() {
return this.prop("tagName");
};
Exemples:
jQuery("<a>").tagName(); //==> "A"
jQuery("<h1>").tagName(); //==> "H1"
jQuery("<coolTagName999>").tagName(); //==> "COOLTAGNAME999"
Notez que les noms de balises sont, par convention, retournés CAPITALISÉS . Si vous souhaitez que le nom de balise renvoyé soit entièrement en minuscules, vous pouvez modifier la fonction personnalisée comme suit:
jQuery.fn.tagNameLowerCase = function() {
return this.prop("tagName").toLowerCase();
};
Exemples:
jQuery("<a>").tagNameLowerCase(); //==> "a"
jQuery("<h1>").tagNameLowerCase(); //==> "h1"
jQuery("<coolTagName999>").tagNameLowerCase(); //==> "cooltagname999"
.prop.
toLowerCase()ou toUpperCase()peut être utile pour comparer le prop('tagName')résultat à un nom de balise. if($("my_selector").prop("tagName").toLowerCase() == 'div')ouif($("my_selector").prop("tagName").toUpperCase() == 'DIV')
Vous pouvez utiliser la nodeNamepropriété du DOM :
$(...)[0].nodeName
$(this).prop('tagname'). this.nodeName est souvent plus efficace. +1
Depuis jQuery 1.6, vous devez maintenant appeler prop:
$target.prop("tagName")
jQuery 1.6+
jQuery('selector').prop("tagName").toLowerCase()
Versions plus anciennes
jQuery('selector').attr("tagName").toLowerCase()
toLowerCase () n'est pas obligatoire.
new String?
Vous ne devez PAS l' utiliser jQuery('selector').attr("tagName").toLowerCase(), car il ne fonctionne que dans les anciennes versions de Jquery.
Vous pouvez utiliser $('selector').prop("tagName").toLowerCase()si vous êtes certain d'utiliser une version de jQuery qui est> = version 1.6.
Vous pensez peut-être que TOUT LE MONDE utilise jQuery 1.10+ ou quelque chose comme ça (janvier 2016), mais malheureusement ce n'est pas vraiment le cas. Par exemple, de nombreuses personnes utilisent encore Drupal 7 aujourd'hui, et chaque version officielle de Drupal 7 à ce jour inclut par défaut jQuery 1.4.4.
Donc, si vous ne savez pas avec certitude si votre projet utilisera jQuery 1.6+, envisagez d'utiliser l'une des options qui fonctionnent pour TOUTES les versions de jQuery:
Option 1 :
jQuery('selector')[0].tagName.toLowerCase()
Option 2
jQuery('selector')[0].nodeName.toLowerCase()