2012-02-15 47 views
1

我試圖在第一次點擊時顯示此CSS,並在下一次將其刪除,但toggleClass似乎不起作用,我的代碼也不在下面。我所能得到的就是要顯示的CSS,它永遠不會被刪除。這適用於iOS上的Safari。謝謝您的幫助!切換CSS Javascript函數

   var menu_enabled = false; 

       $('#nav a').click(function() { 
        if (menu_enabled == true) { 
         $(this).removeClass('sf-js-enabled'); 
         var menu_enabled = false; 
        } 
        else { 
         var menu_enabled = true; 
         $(this).addClass('sf-js-enabled'); 
        } 
       }); 
+0

你不需要在'if' /'else'裏面的'var'前面加變量'menu_enabled',你已經聲明瞭它。你能用[JS小提琴](http://jsfiddle.net/)演示重現這個問題嗎? – 2012-02-15 22:35:41

回答

3

你應該籤.toggleClass(),看起來它就是你想要什麼。

$('#nav a').click(function() { 
    $(this).toggleClass('sf-js-enabled'); 
}); 
+0

我意識到他沒有精確解釋發生了什麼,但是他明確表示'toggleClass()'不起作用。 (我同意它*應該*,但是這個斷言表明他在代碼中的其他地方遇到了問題,而不是他錯過了特定jQuery方法的可能性)。 – 2012-02-15 22:37:14

+0

嘗試過toggleClass,就像我上面所說的那樣,並沒有刪除我正在使用的iPad類。 – pbal 2012-02-15 22:38:17

+1

好的,那就是你的問題,在IOS上與Safari瀏覽器問題 – jondavidjohn 2012-02-15 22:41:57

0

也許使用.className屬性?

var menu_enabled = false; 

$('#nav a').click(function() { 
if (menu_enabled == true) { 
    $(this).className = ""; 
    menu_enabled = false; 
}else 
{ 
    menu_enabled = true; 
    $(this).className = 'sf-js-enabled'; 
} 
}); 
+0

在iOS,Safari上不起作用。 – pbal 2012-02-15 22:49:53

+0

.className適用於iOS,Safari(我只是在iPhone上測試它)。我相信這個問題是與jQuery。你有沒有考慮設置一個id到錨點,然後通過document.getElementById來定位它,並使錨點的onclick調用一個javascript函數?這可能看起來像過度工程,但如果庫不可用,那麼你將不得不推出自己的實現。 – 2012-02-15 23:03:14

+1

感謝您的幫助。不幸的是,我不能使用onclick方法,但我很欣賞這個好主意。 – pbal 2012-02-16 00:04:05

0

我不完全確定你想要完成什麼,但addClass和removeClass應該工作得很好。我會向要添加點擊的元素添加ID或類,但這只是個人偏好。

$(document).ready(function(){ 
    $('#element').click(function(){ 
     if($('#element').hasClass('sf-js-enabled')){ 
      $('#element').removeClass(); 
     } 
     else{ 
      $('#element').addClass('sf-is-enabled'); 
     } 
    }); 
});