2011-06-19 87 views
0

如何在點擊時使用jQuery進行條件交換。如果某個類存在,則將其交換爲另一個類,例如將交換類「A」更改爲「B」。Swap類w/jQuery

<a href="#" id="clickMe"><span class="A"></span>link</a> 

我一直想這一點,但它似乎不工作:

$(this).closest("span").toggleClass("A,B"); 

我缺少什麼?

回答

2

.closest()上升到DOM樹,而不是下降。使用.children().find()

$(function() 
{ 
    $('#clickMe').click(function() 
    { 
     $(this).children('span').toggleClass('a b'); 
     return false; // don't follow the link 
    }); 
}); 

.toggleClass()期望多個類名由空格分隔,而不是逗號。

如果只想類交換一次發生:。

$(function() 
{ 
    $('#clickMe').click(function() 
    { 
     var $span = $(this).children('span:first'); 
     $span.toggleClass('a b', $span.hasClass('a')); 
     return false; // don't follow the link 
    }); 
}); 
+0

哦,它可以是圓頂多一次。謝謝 – santa

-1
$(this).closest("span").removeClass("A").addClass("B"); 

編輯:上面會強行類B代替類A我覺得你要尋找的是每個代碼運行時間A和B之間切換,是否正確?請嘗試:

$(this).closest("span").toggleClass("A B"); 
+0

爲什麼不「$(本).find( 「跨度」)removeClass( 「A」)addClass( 「B」); 「? – oberger

+0

'最接近()'上升到DOM樹,而不是下降。 –

+0

@Owen:因爲OP的代碼包含'$(this).closest(「span」)',那段代碼與交換類的任務無關。 – David