15

我正在尝试在 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).nodeNameCan jQuery provide the tag name?$(this).attr("tag")

但我总是得到undefined回报。html()输出正确。为什么我无法获取每个元素的标签名称?

4

2 回答 2

42

尝试

this.nodeName代替$(this).nodeName

this引用 DOM 元素本身并将$(this)元素包装在一个 jQuery 对象中。

编辑

如果您需要 Jquery 方法,您可以使用

$(this).prop("tagName")
于 2013-04-13T14:55:58.510 回答
5

你有没有尝试过:

$(this).attr("id", "rnd" + this.nodeName.toLowerCase() + "_" + i.toString());

如链接问题所述。$(this)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());
    });     
})
于 2013-04-13T14:53:14.963 回答