开发者

.hasClass() seem to always return true when used inside a .click() function, why?

开发者 https://www.devze.com 2023-01-28 02:17 出处:网络
<ul id=\"list\"> <li>item 1</li> <li>item 2</li> </ul> $(\'#list li\').click(function () {
<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').开发者_如何学JAVAremoveClass('active');
    $(this).addClass('active');
});

Why does "$(this).hasClass('active')" always return true?


What is wrong with your code? For the first time it will false as per given HTML. But next time if you're clicking on same item then only it return true else it returns false only.

Demo


No it doesn't

http://jsbin.com/ubocu3/2

it returns false (the first time)


$('#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') is used to fetch element with that class name.

if u want to check availability of class use this code

<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');
}
});
0

精彩评论

暂无评论...
验证码 换一张
取 消