检查element是否为div


75

如何检查是否$(this)是一个divul还是blockquote

例如:

if ($(this) is a div) {
  alert('its a div!');
} else {
  alert('its not a div! some other stuff');
}

Answers:


122

像这样:

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

4
您知道那$(this).get(0)等于this但没有开销吗?
麦克风

3
@Bjorn对,而且都不是this$(this).get(0)接受this(一个普通的JS DOM节点),将其转换为jQuery对象,然后运行run .get(0),它选择jQuery对象中的第一个常规DOM节点...也就是说,将您带回到开始的地方。this.tagName = $(this)[0].tagName = $(this).get(0).tagName
brymck 2011年

11
@Bryan,令人震惊的是,人们在jQuery中的思维方式不再是在Javascript中的思维方式
Mic

@比约恩:当然这行不通。在您的示例中,您传递了一个字符串(选择器),但是在答案中,this已经是一个DOM元素。试一试this === $(this).get(0)
Felix Kling

4
值得提醒的是,如果javascript决定随机返回大写名称,即使html中的名称是小写,也要使用.toLowerCase()。
布法罗

44

没有jQuery的解决方案已经发布,因此我将使用jQuery发布解决方案

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

20

没有jQuery,您可以说 this.tagName === 'DIV'

请记住,“ N”tagName是大写的。

或者,带有更多标签:

/DIV|UL|BLOCKQUOTE/.test(this.tagName)



4
if(this.tagName.toLowerCase() == "div"){
    //it's a div
} else {
    //it's not a div
}

编辑:在我写作时,给出了很多答案,对不起


1
不。$(this).tagName完全是错误的。您是说$(this).attr('tagName')
Marco Faustinelli

3

通过jQuery,您可以使用$(this).is('div')

针对选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中的至少一个与给定参数匹配,则返回true。


2

其中一些解决方案有些过分。您需要的只是tagName常规的旧JavaScript。再次将整个内容重新包装在jQuery中并没有带来任何好处,尤其是运行库中一些更强大的功能来检查标签名称。如果要在此页面上进行测试,请参考以下示例。

$("body > *").each(function() {
  if (this.tagName === "DIV") {
    alert("Yeah, this is a div");
  } else {
    alert("Bummer, this isn't");
  }
});

1

我正在增强Andreq Frenkel的答案,只是想添加一些内容,而且变得太冗长,所以在这里...

考虑CustomElements扩展现有元素,并且仍然能够检查某个元素是否为例如input,这使我认为这instanceof是解决此问题的最佳解决方案。

但是,应该知道,它instanceof使用了引用相等,因此HTMLDivElement父窗口与其窗口iframe(或影子DOM的窗口)不同。

要处理这种情况,应使用检查元素自己窗口的类,例如:

element instanceof element.ownerDocument.defaultView.HTMLDivElement


1

古老的问题,但由于没有一个答案提及此问题,因此,没有jquery的现代替代方法可能只是使用CSS选择器和 Element.matches()

element.matches('div, ul, blockquote');



0
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 */
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.