Answers:
如果您的元素A从一开始就公开类,则可以编写:
$(element).toggleClass("A B");这将删除class A并添加class B。如果再次执行此操作,它将删除class B并恢复class A。
如果要匹配公开任何一个类的元素,则可以使用多个 类选择器并编写:
$(".A, .B").toggleClass("A B");var $trigger = $(".A"); $trigger.on("click", function() {$trigger.toggleClass("A B")});
                    这里是一个简化的版本:(虽然不是优雅,但易于后续)
$("#yourButton").toggle(function() 
{
        $('#target').removeClass("a").addClass("b"); //Adds 'a', removes 'b'
}, function() {
        $('#target').removeClass("b").addClass("a"); //Adds 'b', removes 'a'
});或者,类似的解决方案:
$('#yourbutton').click(function()
{
     $('#target').toggleClass('a b'); //Adds 'a', removes 'b' and vice versa
});togglejquery 2.0中
                    我已经制作了一个用于DRY的jQuery插件:
$.fn.toggle2classes = function(class1, class2){
  if( !class1 || !class2 )
    return this;
  return this.each(function(){
    var $elm = $(this);
    if( $elm.hasClass(class1) || $elm.hasClass(class2) )
      $elm.toggleClass(class1 +' '+ class2);
    else
      $elm.addClass(class1);
  });
};您可以在这里尝试,复制并在控制台中运行,然后尝试:
$('body').toggle2classes('a', 'b');您的onClick要求:
<span class="A" onclick="var state = this.className.indexOf('A') > -1; $(this).toggleClass('A', !state).toggleClass('B', state);">Click Me</span>试试看:https : //jsfiddle.net/v15q6b5y/
只是JSàjQuery:
$('.selector').toggleClass('A', !state).toggleClass('B', state);这是另一种“非常规”方式。
这种情况的一个示例可能是具有要在另一个元素(例如容器中的选项卡)上切换的类的按钮。
// 1: define the array of switching classes:
var types = ['web','email'];
// 2: get the active class:
var type = $(mybutton).prop('class');
// 3: switch the class with the other on (say..) the container. You can guess the other by using _.without() on the array:
$mycontainer.removeClass(_.without(types, type)[0]).addClass(type);最简单的解决方案是分别对toggleClass()两个类。
假设您有一个图标:
    <i id="target" class="fa fa-angle-down"></i>要在fa-angle-down和之间fa-angle-up进行切换,请执行以下操作:
    $('.sometrigger').click(function(){
        $('#target').toggleClass('fa-angle-down');
        $('#target').toggleClass('fa-angle-up');
    });由于我们fa-angle-down一开始没有fa-angle-up每次都切换两者,所以其中一个离开而另一个出现。
onclick="")不好。您为什么不使用jQuery注册适当的事件处理程序(如果您有很多具有相同处理程序的元素,则使用委托/实时事件)