如果我有类a和类。b,并想在按钮点击之间切换,什么是一个很好的解决方案在jQuery?我仍然不明白toggleClass()是如何工作的。

是否有内联解决方案,把它放在onclick=""事件?


当前回答

这是另一种“非传统”的方式。

它意味着使用下划线或虚线。 它假设一个上下文,其中您: 元素没有init类(这意味着你不能使用toggleClass('a b')) 你必须从某个地方动态地获取类

这种场景的一个例子可以是按钮,其中包含要在另一个元素上切换的类(例如容器中的制表符)。

// 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);

其他回答

我已经做了一个jQuery插件工作DRY:

$.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); }); }; // usage example: $(document.body).on('click', () => { $(document.body).toggle2classes('a', 'b') }) body{ height: 100vh } .a{ background: salmon } .b{ background: lightgreen } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> Click anywhere

这是另一种“非传统”的方式。

它意味着使用下划线或虚线。 它假设一个上下文,其中您: 元素没有init类(这意味着你不能使用toggleClass('a b')) 你必须从某个地方动态地获取类

这种场景的一个例子可以是按钮,其中包含要在另一个元素上切换的类(例如容器中的制表符)。

// 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);

用Jquery切换两个类'A'和'B'。

(' # selecor_id’美元)。toggleClass(“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
});

如果你的元素从一开始就公开类A,你可以这样写:

$(element).toggleClass("A B");

这将删除类A并添加类B。如果您再次这样做,它将删除类B并恢复类A。

如果你想匹配公开任意一个类的元素,你可以使用一个多类选择器并写:

$(".A, .B").toggleClass("A B");