我只是想确定A
的父级(即P
)是否有一个名为some_class
的类。然后,我会在条件中使用true
/ false
结果。
我的结构很简单:
<div class="things">
<p class="some_class">
<a href="something">Link One</a>
</p>
</div>
还有一些jQuery脚本:
$(function() {
$('.things a').click(function(e) {
e.preventDefault();
alert($(e.target).parent()[0].nodeName); //works, displays "P"
alert($(e.target).parent()[0].hasClass('some_class').toString()); //No output
});
});
对第二个alert()
的调用不执行任何操作 - 根本不会显示警告框。
我做错了什么?
答案 0 :(得分:6)
alert($(e.target).parent()[0].hasClass('some_class').toString())
在上面的行中,您将Jquery对象转换回HTML DOM对象。因此$(e.target).parent()[0]
不存在hasClass方法。
删除[0]
alert($(e.target).parent().hasClass('some_class').toString())
的小提琴
答案 1 :(得分:1)
hasClass()
将返回布尔值true
或false
$(e.target).parent()[0].hasClass()
将返回错误,因为索引为零的对象不是jQuery对象。因此,您需要删除[0]
答案 2 :(得分:1)
我更新了jsFiddle
<div class="things">
<p class="some_class">
<a href="something">Link One</a>
</p>
</div>
$(function() {
$('.things a').click(function(e) {
e.preventDefault();
//alert($(e.target).parent().nodeName); //Shows "undefined". wtf
alert($(e.target).parent()[0].nodeName); //works
alert($(this).parent().hasClass('some_class').toString()); //No output
});
});