.hasClass()似乎总是在.click()函数中使用时返回true,为什么?

时间:2010-11-30 08:36:13

标签: jquery

<ul id="list">
    <li>item 1</li>
    <li>item 2</li>
</ul>

$('#list li').click(function () {
    alert($(this).hasClass('active')); // supposed to be an if
    $(this).parent('ul').children('li').removeClass('active');
    $(this).addClass('active');
});

为什么“$(this).hasClass('active')”总是返回true?

3 个答案:

答案 0 :(得分:4)

您的代码有什么问题?根据给定的HTML,它第一次是假的。但是下次如果你点击相同的项目,那么只返回true,否则它只返回false。

Demo

答案 1 :(得分:3)

不,不是

http://jsbin.com/ubocu3/2

它返回false(第一次)

答案 2 :(得分:0)

$('#list li').click(function () {
    alert($(this).hasClass('active')); // supposed to be an if
    $(this).parent('ul').children('li').removeClass('active');
    $(this).addClass('active');
});

$(this).hasClass('active')用于获取具有该类名的元素。

如果你想检查课程的可用性,请使用此代码

<ul id="list">
    <li>item 1</li>
    <li>item 2</li>
</ul>

$('#list li').click(function () {
    alert($(this).isClass('active')); // alert returns true if element has that class
if($(this).is('.active'))
{    
    $(this).parent('ul').children('li').removeClass('active');
    $(this).addClass('active');
}
});