2013-08-07 37 views
1

我需要切換一個元素的類,只有當它的祖父元素有一個特定的類。該代碼是這樣的:如何根據特定元素有條件地切換課程?

<ul> 
    <li class="active"> 
     <a class"something" href="#"><span class="icon-a"></span></a> 
    </li> 
    <li> 
     <a class"something" href="#"><span class="icon-a"></span></a> 
    </li> 
    <li> 
     <a class"something" href="#"><span class="icon-a"></span></a> 
    </li> 
</ul> 

而jQuery代碼我曾嘗試是:

if ($(".something span").parents('li').hasClass("active") && $(".something span").hasClass("icon-a")) { 
$(".something span").toggleClass("icon-a").toggleClass("icon-b"); 
} 

的問題是所有span元素得到了同級車切換。如果祖父母元素<li>有一個「活動」類,我只需要切換。

+1

你在用什麼類?如果僅僅是造型,你能不能創建一個CSS規則來做祖父母檢測並自由地添加孫子類? –

+0

你想創建什麼?你沒有指定類將如何切換。即:使用'.click' – Shivam

+0

當頁面加載時我需要它,所以我把它放在$(document).ready(function())中。我無法將它放入CSS中,因爲CSS無法檢測到li元素是否具有「活動」類。 – user2395853

回答

1

只要選擇你的意思,並忘記條件。

$('li.category.active > a.something > span.icon-a').addClass('icon-b'); 
+0

我不能這樣做,因爲此代碼會顯示圖標a和圖標b類。只有li元素具有「活動」類時,我才需要顯示icon-b。 – user2395853

+1

@ user2395853 ..只需在addClass後鏈接'removeClass('icon-a')' –

+0

謝謝!有用!我把toggleClass,而不是addClass和removeClass。 – user2395853

相關問題