2010-07-26 90 views
63

我想在CSS之間切換,所以當用戶單擊按鈕(#user_button)時,它會顯示菜單(#user_options)並更改CSS,並且當用戶再次單擊它時,它將恢復正常。到目前爲止,這是我所有的:jQuery切換CSS?

$('#user_button').click(function() { 
    $('#user_options').toggle(); 
    $("#user_button").css({  
     borderBottomLeftRadius: '0px', 
     borderBottomRightRadius: '0px' 
    }); 
    return false; 
}); 

任何人都可以幫忙嗎?

+2

你可以發佈你的HTML/CSS代碼段? – 2010-07-26 18:11:06

回答

105
$('#user_button').toggle(function() { 
    $("#user_button").css({borderBottomLeftRadius: "0px"}); 
}, function() { 
    $("#user_button").css({borderBottomLeftRadius: "5px"}); 
}); 

在這種情況下使用類比直接設置css更好,請看alecwh提到的addClass和removeClass方法。

$('#user_button').toggle(function() { 
    $("#user_button").addClass("active"); 
}, function() { 
    $("#user_button").removeClass("active"); 
}); 
+35

你可以使用.toggleClass()類 http://api.jquery.com/toggleClass/ – gadelkareem 2012-06-21 13:29:37

+6

這不再起作用此方法在jQuery 1.8中被棄用,並在jQuery 1.9中被刪除。請參閱http://api.jquery.com/toggle-event/ – binaryfunt 2016-07-28 22:35:26

+0

但是,如果我們有轉換效果呢?在這種情況下,轉換效果將不會被應用,對嗎? – 2017-09-06 10:48:37

4

您可能想要使用jQuery的.addClass.removeClass命令,併爲這些狀態創建兩個不同的類。對我而言,這將是最好的做法。

+2

toggleClass相當於這些,除非你想刪除一個不同於你正在添加的類因爲某種原因 – Zach 2013-12-14 11:23:46

1

最好的辦法是設置在CSS類樣式像.showMenu.hideMenu與各種風格的內部。然後你可以做類似於

$("#user_button").addClass("showMenu"); 
58

我會在jQuery中使用toggleClass函數,並定義CSS類,例如

/* start of css */ 
#user_button.active { 
    border-bottom-right-radius: 5px; 
    border-bottom-left-radius: 5px; 
    -webkit-border-bottom-right-radius: 5px; /* user-agent specific */ 
    -webkit-border-bottom-left-radius: 5px; 
    -moz-border-radius-bottomright: 5px; 
    -moz-border-radius-bottomleft: 5px; /* etc... */ 
} 
/* start of js */ 
$('#user_button').click(function() { 
    $('#user_options').toggle(); 
    $(this).toggleClass('active'); 
    return false; 
}) 
+0

這也是我所要做的。在你的JS中減少樣式然後 – 2010-07-28 10:34:39

+1

爲什麼這不是答案? – 2012-12-11 20:22:48

+0

@LeviBotelho可能是因爲我像20分鐘後...我的生活故事... – Ties 2012-12-12 12:14:51