2011-09-11 83 views
0

我需要根據條件判斷鏈接是否具有特定的類,從而在鏈接中放置一個鏈接。試過這個,但它似乎並沒有工作。我錯過了什麼?toggleClass with jquery

if ($("#myLink").hasClass("dis")) { 
    $("#myLink").find("span").toggleClass("uico", "uicoGR"); 
} else { 
    $("#myLink").find("span").toggleClass("uicoGR", "uico"); 
} 

<a href="#" id="myLink" class="dis"><span class="uico"></span></a> 

回答

3

被切換應在第一個參數來傳遞,由空格分開的兩個類名。

此外,hasClass()條件可以添加到選擇器。

$('.dis#mylink span').toggleClass('uico uicoGR') ; 

編輯

重讀的問題,目前還不清楚,你體會到了什麼toggleClass()一樣。該函數查找所有名爲的類,如果找不到它們,則會添加它們;如果它們不是,則會將其刪除。看起來你正在根據是否找到第三個類來添加或刪除類。爲此,只需使用addClass()removeClass()

$('#mylink').each(function() { 
    if($(this).hasClass('dis')) { 
    $(this).find('span').addClass('uicoGR').removeClass('uico') ; 
    } else { 
    $(this).find('span').addClass('uico').removeClass('uicoGR') ; 
    } 
}) ; 
3

的類應在單個字符串參數傳遞,用空格隔開,例如:

$("#myLink").find("span").toggleClass("uico uicoGR"); 
+0

原始問題中有一個條件需要解決。 – FiveTools

+0

我同意FiveTools,這個答案指出了一個jQuery使用問題,但沒有回答這個問題。 – jfriend00

+0

我認爲這個條件已經被原始代碼解決了,並指出缺少的東西。 –

1

如果你堅持使用雙類的方法,然後格斯擁有正確的答案在這裏,但你是否在所有需要這個代碼,我將挑戰。如果這些類用於CSS,則不需要任何此JavaScript,因爲您已經有足夠的信息在CSS選擇器中辨別這兩個狀態,而無需添加/刪除uicoGR或uico。

的第一狀態(你正在使用.uicoGR什麼)是這樣的CSS選擇器:

#mylink span {put your CSS here} 

第二狀態(你正在使用.uico什麼)是這樣的CSS選擇器:

#mylink.dis span {put your CSS here} 

當類「dis」存在時,第二個狀態將覆蓋第一個狀態的CSS。