2016-03-14 43 views
0

我有一些字體真棒圖標,像這樣的:撥動類不更換類

<a class="allarme" id="allarme1" href="#"> 
    <i class="fa fa-toggle-off"></i> <!--<span>Avvia</span>--> 
</a> 

我要替換點擊該圖標,所以我需要改變i類。例如從fa-toggle-offfa-toggle-on

所以我寫了這個peice的代碼:

$('.allarme').click(function(e){ 
    e.preventDefault(); 
    console.log("clicked"); 
    $(this).find("i").toggleClass(".fa-toggle-off .fa-toggle-on"); 
}); 

控制檯告訴我,該事件被解僱正確,但類不切換。我試圖檢查SO previous questions,我發現在另一個問題上找到了與正確解決方案相同的代碼。我錯過了什麼?

+4

這是你在'toggleClass'調用中離開'.'的錯字嗎? – Stryner

+1

這是原始代碼中的一個錯誤,我沒有注意到... :) OMG!謝謝@Stryner –

+0

不應該是'$(this).find(「i」)。toggleClass(「fa-toggle」);'它在哪裏添加它,如果不存在則刪除它? – LGSon

回答

0

jQuery.toggleClass()最多需要2個參數:

  1. 類名
  2. 國家

如果你想刪除一個類,一個簡單的添加回你點擊的東西每一次,你需要提供的類名

$('.allarme').click(function(e){ 
    e.preventDefault(); 
    $(this).find("i").toggleClass("fa-toggle"); 
}); 

如果你想互換tw o不同類別,您的代碼將需要更多的邏輯:

$('.allarme').click(function(e){ 
    e.preventDefault(); 

    var $i = $(this).find('i') 

    if ($i.hasClass('fa-toggle-off')) { 
     $i.removeClass('fa-toggle-off').addClass('fa-toggle-on') 
    } else { 
     $i.removeClass('fa-toggle-on').addClass('fa-toggle-off') 
    } 
}); 

我建議您使用第一種方法。從JavaScript的角度來看,它更加乾淨,但也從功能性的CSS角度來看。

+0

謝謝,但問題只是一個錯字,已經修復。無論如何請注意,我只是在一行中完成所有工作;) –