jQuery标签的元素名称

时间:2013-04-13 14:52:02

标签: jquery html tags

我试图在jQuery中获取元素标记名称。

我有以下html:

<div class="section" id="New_Revision">

    <h1>New Revision&nbsp<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()正确输出。为什么我不能得到每个元素的标记名称?

2 个答案:

答案 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());
    });     
})