我想获取元素的子标记名称。
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作为结果......
谢谢。
答案 0 :(得分:9)
$(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);
});
<强> DEMO 强>
答案 1 :(得分:4)
.add
将向当前jQuery集合添加一个元素,在本例中为$(this)
。 $(this)
包含div
,当您运行.prop('tagName')
时,jQuery会返回集合中第一个元素的标记名称,因此您会得到“div”。
请尝试.children
:
var child = $(this).children().eq(0).prop("tagName");
答案 2 :(得分:3)
尝试:
var child = $(this).children(":first");
这将获得this
的第一个孩子。
非常确定.prop('tagName')
仅适用于jQuery 1.6 +。
答案 3 :(得分:1)
您可以使用target
对象的event
属性,请尝试以下操作:
$(".element").bind("click", function(event){
var target = event.target.localName; // or event.target.tagName;
$("#debugger").html(target);
});