web-dev-qa-db-fra.com

Vérifiez si l'élément est une div

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');
}
48
James

Quelque chose comme ça:

if(this.tagName == 'DIV'){
    alert("It's a div!");
} else {
    alert("It's not a div! [some other stuff]");
}
81
Bjorn

Les solutions sans jQuery sont déjà publiées, je vais donc les poster avec jQuery

$(this).is("div,ul,blockquote")
40
MBO

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)

20
Mic
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

4
Dirk McQuickly

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.

3
Rup

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

3
Andreq Frenkel

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");
  }
});
2
brymck

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

1
GullerYA

Essayez d’utiliser tagName

0
Giann
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 */
0
Ir Calif