我试图在jQuery中获取元素标记名称。
我有以下html:
<div class="section" id="New_Revision">
<h1>New Revision <img alt="Lock_closed" class="edit" data-id="1" src="/assets/lock_closed.svg" /></h1>
<p>This is a test paragraph.</p>
<ol class="references">
<li>test</li>
</ol>
</div>
和javascript:
$(".edit").click(function(){
$(this).closest("div.section").children().each(function(){
alert($(this).tagName + " - " + $(this).html());
});
})
我已尝试$(this).tagName
,$(this).nodeName
和$(this).attr("tag")
,如此问题中所述:Can jQuery provide the tag name?
但我总是得到undefined
作为回报。 html()
正确输出。为什么我不能得到每个元素的标记名称?
答案 0 :(得分:40)
尝试
this.nodeName
代替$(this).nodeName
this
引用DOM元素本身,$(this)
将元素包装在jQuery对象中。
修改强>
如果您需要Jquery方法,可以使用
$(this).prop("tagName")
答案 1 :(得分:5)
你试过了吗?
$(this).attr("id", "rnd" + this.nodeName.toLowerCase() + "_" + i.toString());
正如相关问题所述。此外, $(this)和此
之间存在很大差异在浏览器控制台中尝试了这个并且它可以工作:
document.getElementsByTagName("a")[0].tagName // this uses javascript
这使用jquery:
$('a').get(0).nodeName; // this works for jquery
试试这个:
$(".edit").click(function(){
$(this).closest("div.section").children().each(function(){
alert(this.tagName + " - " + $(this).html());
});
})