removeclass不起作用

时间:2012-04-03 09:26:15

标签: javascript jquery removeclass

我有一个非常简单的问题,实际上这不是问题,这是修复javascript错误,无论如何,这里是代码:

    $(document).ready(function() {
        $('#accordion a.item').click(function () {
            $(this).addClass('selected');
            $(this).removeClass('selected');
            $('#accordion li').children('ul').slideUp('slow'); 
            $(this).siblings('ul').slideDown('slow');  
        });
    });

和html:

<ul id="accordion">
    <li>
        <a href="#" class="item">BANKS</a>
        <ul>BLA BLA BLA</ul>
    </li>
    <li>
        <a href="#" class="item">PETROL</a>
        <ul>BLA BLA BLA</ul>
    </li>
</ul>

当我点击其中一个链接时,“选定”类被添加到其中,但是当我点击另一个链接时,“选定”类没有删除,那可能是什么错误?

谢谢大家的帮助!我真的很感激!

4 个答案:

答案 0 :(得分:3)

您不清楚自己要做什么,但看起来您希望将该类添加到所单击的元素中,然后从其所有兄弟删除 < / em>的。您当前的代码将类添加到同一元素并将其删除,最终没有执行任何操作。

你可能想要像

这样的东西
$(document).ready(function() {
    $items = $('#accordion a.item'); // all the items
    $items.click(function () {
        $items.removeClass('selected'); // remove class from everything
        $(this).addClass('selected'); // add class to clicked item
        $('#accordion li').children('ul').slideUp('slow'); 
        $(this).siblings('ul').slideDown('slow');  
    });
});

答案 1 :(得分:0)

使用ToggeleClass而不是adClass/ removeClass方法。

$("Selector").toggleClass('name of class',true); //apply class
$("Selector").toggleClass('name of class',false); //remove class

答案 2 :(得分:0)

$(this)是您点击的链接,而不是所有链接。您需要删除所有链接的类。

$(document).ready(function() {
        $('#accordion a.item').click(function () {
            $('#accordion a.item').removeClass('selected');
            $(this).addClass('selected');
            $('#accordion li').children('ul').slideUp('slow'); 
            $(this).siblings('ul').slideDown('slow');  
        });
    });

答案 3 :(得分:0)

您的函数中的以下行是添加和删除选定的同一元素的类。

$(this).addClass('selected');
$(this).removeClass('selected');

因为您要在 this 引用的元素上添加和删除类,这是当前元素(刚刚单击的元素)。这些将做的是将选定的类添加到单击的元素并立即将其删除。

您需要做的是

1-首先删除从包含它的任何元素中选择的类

2-将所选的类添加到

引用的当前元素

一种方法是

$('#accordion a.selected').removeClass('selected');
$(this).addClass('selected');
希望有所帮助。