检查,如果元素是一个div
如何检查$(this)
是div
还是blockquote
?
例如:
if ($(this) is a div) { alert('its a div!'); } else { alert('its not a div! some other stuff'); }
像这样的东西:
if(this.tagName == 'DIV'){ alert("It's a div!"); } else { alert("It's not a div! [some other stuff]"); }
没有jQuery的解决scheme已经发布,所以我会使用jQuery发布解决scheme
$(this).is("div,ul,blockquote")
没有jQuery你可以说this.tagName === 'DIV'
请记住, tagName
中的“N”是大写字母。
或者,更多标签:
/DIV|UL|BLOCKQUOTE/.test(this.tagName)
通过jQuery你可以使用$(this).is('div')
:
根据select器,元素或jQuery对象检查当前匹配的元素集合,如果这些元素中至less有一个匹配给定的参数,则返回true。
if(this.tagName.toLowerCase() == "div"){ //it's a div } else { //it's not a div }
编辑:在我写作的时候,给了很多答案,抱歉抱歉
其中一些解决scheme有点过分。 所有你需要的是来自普通的旧JavaScript的tagName
。 你再也不用在jQuery中重新包装整个事情了,特别是运行一些库中更强大的函数来检查标签名称。 如果你想在这个页面上testing它,下面是一个例子。
$("body > *").each(function() { if (this.tagName === "DIV") { alert("Yeah, this is a div"); } else { alert("Bummer, this isn't"); } });
检查这个元素是否是DIV
if (this instanceof HTMLDivElement) { alert('this is a div'); }
UL的HTMLUListElement
一样,
HTMLQuoteElement
for blockquote
尝试使用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 */
我正在加强Andreq Frenkel的回答,只是想补充一些,所以就这样变得太冗长了…
关于CustomElements的思考扩展了现有的,并且仍然能够检查一个元素是否是input
,这使得我认为instanceof
是解决这个问题的最好方法。
但是应该知道, instanceof
使用引用相等,所以父窗口的HTMLDivElement
将不会与它的iframe
(或者shadow DOM等)相同。
为了处理这种情况,应该使用checked元素自己的窗口类,如下所示:
element instanceof element.ownerDocument.defaultView.HTMLDivElement