removeclass не работает - PullRequest
       34

removeclass не работает

0 голосов
/ 03 апреля 2012

У меня очень простой вопрос, на самом деле это не вопрос, это исправление ошибки 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>

когда я щелкаю одну из ссылок, к ней добавляется класс selected, но когда я щелкаю по другой ссылке, класс selected не удаляется, в чем может быть ошибка?

спасибо всем за помощь! я действительно ценю это!

Ответы [ 4 ]

3 голосов
/ 03 апреля 2012

Непонятно, что вы пытаетесь сделать, но похоже, что вы хотите добавить класс к элементу, по которому щелкнули, и удалить из всех его родных элементов .Ваш текущий код добавляет и удаляет класс к тому же элементу, что в итоге ничего не делает.

Возможно, вы хотите что-то вроде

$(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');  
    });
});
0 голосов
/ 03 апреля 2012

Эти следующие строки в ваших функциях добавляют и удаляют класс, выбранный для того же элемента.

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

, поскольку вы добавляете и удаляете класс для элемента, на который указывает this , который является текущим элементом (который был только что нажат). Что они будут делать, так это добавить выбранный класс к элементу, по которому щелкнули, и немедленно удалить его.

Что вам нужно сделать, это

1 - сначала удалить класс, выбранный из любых элементов, у которых он есть

2 - добавить класс, выбранный к текущему элементу, указанному this

Один из способов сделать это -

$('#accordion a.selected').removeClass('selected');
$(this).addClass('selected');

надеюсь, что это поможет.

0 голосов
/ 03 апреля 2012

$(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');  
        });
    });
0 голосов
/ 03 апреля 2012

Используйте ToggeleClass, а затем adClass/ removeClass методы.

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