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 对象数组添加新元素,但您正在尝试获取现有元素的标签名称。所以,你需要一些getter方法。


使用 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 回答