在两个不同的类jQuery之间切换

Yot*_*ray 19 javascript jquery jquery-ui class

无法获得以下代码:

$('#changeMode').button().click(function(){
    $('#playfield').toggle(function() {
        $(this).switchClass("gridView","plainView");
    }, function() {
        $(this).switchClass("plainView","gridView");
   });      
});
Run Code Online (Sandbox Code Playgroud)

我无法让它切换下面的div类.

<div id="playfield" class="gridView"></div>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:我试过这个:

$('#changeMode').button().click(function(){
    if ($('#playfield').attr('class') == "gridView"){
        $('#playfield').removeClass("gridView");
        $('#playfield').addClass("plainView");
    } else {
        $('#playfield').removeClass("plainView");
        $('#playfield').addClass("gridView");
    }
});
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,到底是什么?

Rio*_*ams 40

我不知道switchClass,也许你在考虑toggleClass?无论如何 - 我有一些使用它的旧代码(我在toggleClass中遇到了一些奇怪的问题):

$(this).removeClass("gridView").addClass("plainView"); 

or

$(this).toggleClass("gridView plainView");
Run Code Online (Sandbox Code Playgroud)

反之亦然.

例:

$('#changeMode').button().click(function(){
    $('#playfield').toggle(function() {
        $(this).toggleClass("gridView plainView");
        //$(this).removeClass("gridView").addClass("plainView"); 
    }, function() { 
        $(this).toggleClass("plainView gridView");
        //$(this).removeClass("plainView").addClass("gridView"); 
   });      
});
Run Code Online (Sandbox Code Playgroud)

但正如其他人所说,toggleClass应该适合您的需求.

  • switchClass 是一个 jQuery UI 功能。我尝试了上面显示的 toggleClass 以及您在评论中显示的更难的方法,但没有效果。 (2认同)
  • plainView/gridView在语法方面似乎不正确:http://api.jquery.com/toggleClass/ (2认同)

Guy*_*Guy 8

正确的语法是在第一个参数中使用"一个或多个类名(由空格分隔).."(来自.toggleClass()),而不是在第一个和第二个参数中引用类名.

例如

$(this).toggleClass("gridView plainView");
Run Code Online (Sandbox Code Playgroud)