Comment vérifier si $(this)
est un div
, ul
ou blockquote
?
Par exemple:
if ($(this) is a div) {
alert('its a div!');
} else {
alert('its not a div! some other stuff');
}
Quelque chose comme ça:
if(this.tagName == 'DIV'){
alert("It's a div!");
} else {
alert("It's not a div! [some other stuff]");
}
Les solutions sans jQuery sont déjà publiées, je vais donc les poster avec jQuery
$(this).is("div,ul,blockquote")
Sans jQuery, vous pouvez dire this.tagName === 'DIV'
Gardez à l'esprit que le 'N' dans tagName
est en majuscule.
Ou, avec plus de tags:
/DIV|UL|BLOCKQUOTE/.test(this.tagName)
if(this.tagName.toLowerCase() == "div"){
//it's a div
} else {
//it's not a div
}
edit: pendant que j'écrivais, beaucoup de réponses ont été données, désolé pour doublure
En passant par jQuery, vous pouvez utiliser $(this).is('div')
:
Vérifiez le jeu d'éléments correspondant actuellement par rapport à un objet sélecteur, élément ou jQuery et renvoyez la valeur true si au moins un de ces éléments correspond aux arguments donnés.
Pour vérifier si cet élément est DIV
if (this instanceof HTMLDivElement) {
alert('this is a div');
}
Idem pour HTMLUListElement
pour UL,HTMLQuoteElement
pour blockquote
Certaines de ces solutions vont un peu trop loin. Tout ce dont vous avez besoin est tagName
à partir de vieux JavaScript classique. Vous n'avez vraiment aucun avantage à réemballer le tout dans jQuery, et surtout à exécuter certaines des fonctions les plus puissantes de la bibliothèque pour vérifier le nom de la balise. Si vous voulez le tester sur cette page, voici un exemple.
$("body > *").each(function() {
if (this.tagName === "DIV") {
alert("Yeah, this is a div");
} else {
alert("Bummer, this isn't");
}
});
J'enrichis la réponse d'Andreq Frenkel, je voulais juste en ajouter et cela est devenu trop long alors je suis parti ici ...
Penser à CustomElements étendre les existants et pouvoir toujours vérifier si un élément est, par exemple, input
, me fait penser que instanceof
est la meilleure solution à ce problème.
Il faut savoir cependant que instanceof
utilise l'égalité référentielle, donc HTMLDivElement
d'une fenêtre parente ne sera pas le même que celui de sa iframe
(ou de son DOM shadow, etc.).
Pour gérer ce cas, il convient d'utiliser les classes de la fenêtre de l'élément vérifié, comme par exemple:
element instanceof element.ownerDocument.defaultView.HTMLDivElement
Essayez d’utiliser tagName
let myElement =document.getElementById("myElementId");
if(myElement.tagName =="DIV"){
alert("is a div");
}else{
alert("is not a div");
}
/*What ever you may need to know the type write it in capitalised letters "OPTIO" ,"PARAGRAPH", "SPAN" AND whatever */