2013-05-21 65 views
2

那麼我有一個菜單,在那裏我想有一個名爲active的類,當它的活動,顯然。IE8 toggleClass無法正常工作

要切換這個類,我使用jQuery切換函數,但它只是在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'); 
});