2013-05-21 5 views
2

Ну, у меня есть меню, и там я хочу иметь класс под названием active, когда он активен, очевидно.IE8 toggleClass не работает должным образом

Чтобы переключить этот класс, я использую функцию jQuery toggle, но он просто активирует его в элементе js. Если я проверю элемент dom, этот класс никогда не будет установлен. Но мне нужен этот класс из-за моих стилей CSS.

Я знаю, что уже есть много тем о toggleClass JQuery, но они не подходят (по крайней мере, я не мог найти ничего подходящего)

Вот некоторые код:

$('#menu').on('click', '.tab span', function (e) { 
    e.stopPropagation(); 
    var $tab = $(this).parent('.tab'); 
    $tab.siblings('.tab.active').removeClass('active'); 
    $tab.toggleClass('active'); 
}); 

HTML разметка

<div id="menu"> 
    <div class="tab"> 
     <span></span> 
    </div> 
</div> 

Его работает во всех браузерах, кроме IE8 Спасибо заранее.

+2

Что не работает по этому поводу? как вы тестируете, что класс не применяется? –

+0

Не проверял эту теорию, но я, похоже, вспоминаю подобную проблему и решаю с чем-то вроде «базового» класса «чередовать/переключать» с моим «активным» классом. Попробуйте что-то подобное, я думаю, что это может помочь. Прошло много времени с тех пор, как я видел эту проблему, но я действительно помню ее, и я клянусь, что я обработал ее чем-то вроде '.toggleClass (« base active »)', где база была сброшена, когда активна добавлена ​​или наоборот. – SpYk3HH

+1

Кроме того, поскольку вы используете «removeClass» так, как вы, у вас нет «реальной необходимости» для «toggleClass» здесь. Вы бы сделали так же, чтобы заменить эту строку на 'addClass'. И строка '$ tab.siblings ('. Tab.active'). RemoveClass ('active');' не собирается удалять активный из себя ... – SpYk3HH

ответ

1

Попробуйте вместо этого:

$('#menu').on('click', '.tab span', function (e) { 
    e.stopPropagation(); 
    var $tab = $(this).parent('.tab'); 
    $tab.addClass('active').siblings('.tab').removeClass('active'); 
}); 
0

Попробуйте это:

$('#menu').on('click', '.tab span', function (e) { 
    e.stopPropagation(); 
    var $tab = $(this).parent('.tab'); 

    // remove active from all tabs 
    $('#menu .tab').removeClass('active'); 

    // make current tab as active 
    $tab.addClass('active'); 
}); 
Смежные вопросы