2010-07-26 92 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