jQuery`hasClass()`不会产生任何结果

时间:2011-10-13 16:54:20

标签: javascript jquery

我只是想确定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()的调用不执行任何操作 - 根本不会显示警告框。

我做错了什么?

A JSFiddle is here

3 个答案:

答案 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())

以下是我修改http://jsfiddle.net/LVerN/5/

的小提琴

答案 1 :(得分:1)

hasClass()将返回布尔值truefalse

$(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
    });
});