5

要素の子タグ名を取得したい。

HTML:

<div class="element">
    <h1>title</h1>
</div>
<div class="element">
    <img src="http://2.bp.blogspot.com/-ma66w8WJsZ0/UBVcmt3XS4I/AAAAAAAAAWw/4UyVd2eR8A0/s1600/olympic-logo.thumbnail.jpg" />
</div>
<div id="debugger"></div>

jQuery:

$(".element").bind("click", function(){

    var child = $(this).add("first-child").prop("tagName");

    $("#debugger").html(child);

});​

結果として常にDIVを取得する理由がわかりません...

ありがとうございました。

http://jsfiddle.net/8Xg3G/2/

4

4 に答える 4

11
$(this).children()[0].tagName

また

$(this).children().first().prop('tagName');

.add()jQueryオブジェクト配列に新しい要素を追加するために使用されますが、既存の要素のタグ名を取得しようとしています。したがって、いくつかのゲッターメソッドが必要です。


JavaScriptを使用

this.firstChild.tagName

また

this.childNodes[0].tagName

完全なコード

$(".element").bind("click", function(){
    var child = $(this).children().first().prop('tagName');
    $("#debugger").html(child);
});

デモ

于 2012-08-16T12:55:43.927 に答える
4

.add現在のjQueryコレクションに要素を追加します。この場合は$(this)$(this)を含み、divを実行する.prop('tagName')と、jQueryはコレクションの最初の要素のタグ名を返すため、結果として「div」を取得します。

.children代わりに試してください:

var child = $(this).children().eq(0).prop("tagName");
于 2012-08-16T12:55:50.213 に答える
3

試す:

var child = $(this).children(":first");

これは の最初の子を取得しthisます。

.prop('tagName')jQuery 1.6以降でのみ機能することは間違いありません。

于 2012-08-16T12:56:41.417 に答える
1

targetオブジェクトのプロパティを使用できますevent。次のことを試してください。

$(".element").bind("click", function(event){
    var target = event.target.localName; // or event.target.tagName;
    $("#debugger").html(target);
});

フィドル

于 2012-08-16T12:56:58.953 に答える