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).nodeNamejQueryはタグ名を提供できますか?$(this).attr("tag")

しかし、私は常にundefined見返りを得ています。html()正しく出力されます。各要素のタグ名を取得できないのはなぜですか?

4

2 に答える 2

42

試す

this.nodeNameそれ以外の$(this).nodeName

thisDOM 要素自体を参照し、$(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 に答える