当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .toggleClass()用法及代码示例


用法一

.toggleClass( className ) => jQuery

说明:根据类的存在或状态参数的值,从匹配元素集中的每个元素中添加或删除一个或多个类。

  • 添加的版本:1.0.toggleClass( className )

    • className
      类型:String
      为匹配集中的每个元素切换一个或多个类(由空格分隔)。
  • 添加的版本:1.3.toggleClass( className, state )

    • className
      类型:String
      为匹配集中的每个元素切换一个或多个类(由空格分隔)。
    • state
      类型:Boolean
      一个布尔值(不仅仅是真/假),用于确定是否应该添加或删除该类。
  • 添加的版本:3.3.toggleClass( classNames )

    • classNames
      类型:Array
      为匹配集中的每个元素切换的类数组。
  • 添加的版本:3.3.toggleClass( classNames, state )

    • classNames
      类型:Array
      为匹配集中的每个元素切换的类数组。
    • state
      类型:Boolean
      一个布尔值(不仅仅是真/假),用于确定是否应该添加或删除该类。
  • 添加的版本:1.4.toggleClass( function [, state ] )

    • function
      类型:Function(Integer 索引,String 类名,Boolean 状态)=> String
      一个函数,返回一个或多个空格分隔的类名,以在匹配集中每个元素的类属性中切换。接收集合中元素的索引位置、旧类值和状态作为参数。
    • state
      类型:Boolean
      一个布尔值,用于确定是否应添加或删除该类。
  • 添加的版本:3.3.toggleClass( function [, state ] )

    • function
      类型:函数(整数 index , String 类名称,布尔值状态)=> String |大批
      返回一个或多个以空格分隔的类名或一组类名的函数,这些类名将在匹配集中每个元素的类属性中切换。接收集合中元素的索引位置、旧类值和状态作为参数。
    • state
      类型:Boolean
      一个布尔值,用于确定是否应添加或删除该类。

此方法将一个或多个类作为其参数。在第一个版本中,如果匹配的元素集中的元素已经具有该类,则将其删除;如果一个元素没有类,则添加它。例如,我们可以将 .toggleClass() 应用于简单的 <div>

<div class="tumble">Some text.</div>

我们第一次应用 $( "div.tumble" ).toggleClass( "bounce" ) 时,我们得到以下信息:

<div class="tumble bounce">Some text.</div>

我们第二次应用 $( "div.tumble" ).toggleClass( "bounce" ) 时,<div> 类返回到单个 tumble 值:

<div class="tumble">Some text.</div>

.toggleClass( "bounce spin" ) 应用于相同的 <div> 会在 <div class="tumble bounce spin"><div class="tumble"> 之间交替。

.toggleClass() 的第二个版本使用第二个参数来确定是否应该添加或删除类。如果此参数的值为 true ,则添加该类;如果 false ,则删除该类。实质上,声明:

$( "#foo" ).toggleClass( className, addOrRemove );

相当于:

if ( addOrRemove ) {
  $( "#foo" ).addClass( className );
} else {
  $( "#foo" ).removeClass( className );
}

从 jQuery 1.4 开始, 如果没有参数传递给.toggleClass(), 元素上的所有类第一次.toggleClass()被调用将被切换。同样从 jQuery 1.4 开始,要切换的类名可以通过传入一个函数来确定。

$( "div.foo" ).toggleClass(function() {
  if ( $( this ).parent().is( ".bar" ) ) {
    return "happy";
  } else {
    return "sad";
  }
});

如果其父元素的类为 bar ,则此示例将为 <div class="foo"> 元素切换 happy 类;否则,它将切换 sad 类。

例子:

单击段落时切换类'highlight'。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>toggleClass demo</title>
  <style>
  p {
    margin: 4px;
    font-size: 16px;
    font-weight: bolder;
    cursor: pointer;
  }
  .blue {
    color: blue;
  }
  .highlight {
    background: yellow;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p class="blue">Click to toggle</p>
<p class="blue highlight">highlight</p>
<p class="blue">on these</p>
<p class="blue">paragraphs</p>
 
<script>
$( "p" ).click(function() {
  $( this ).toggleClass( "highlight" );
});
</script>
 
</body>
</html>

演示:

每第三次点击该段落时,将"highlight" 类添加到点击的段落,每一次和第二次点击将其删除。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>toggleClass demo</title>
  <style>
  p {
    margin: 4px;
    font-size: 16px;
    font-weight: bolder;
    cursor: pointer;
  }
  .blue {
    color: blue;
  }
  .highlight {
    background: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<p class="blue">Click to toggle (<span>clicks: 0</span>)</p>
<p class="blue highlight">highlight (<span>clicks: 0</span>)</p>
<p class="blue">on these (<span>clicks: 0</span>)</p>
<p class="blue">paragraphs (<span>clicks: 0</span>)</p>
 
<script>
var count = 0;
$( "p" ).each(function() {
  var $thisParagraph = $( this );
  var count = 0;
  $thisParagraph.click(function() {
    count++;
    $thisParagraph.find( "span" ).text( "clicks: " + count );
    $thisParagraph.toggleClass( "highlight", count % 3 === 0 );
  });
});
</script>
 
</body>
</html>

演示:

切换每个 div 按钮上指示的类名。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>toggleClass demo</title>
  <style>
  .wrap > div {
    float: left;
    width: 100px;
    margin: 1em 1em 0 0;
    padding-left: 3px;
    border: 1px solid #abc;
  }
  div.a {
    background-color: aqua;
  }
  div.b {
    background-color: burlywood;
  }
  div.c {
    background-color: cornsilk;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
 
<div class="buttons">
  <button>toggle</button>
  <button class="a">toggle a</button>
  <button class="a b">toggle a b</button>
  <button class="a b c">toggle a b c</button>
  <a href="#">reset</a>
</div>
<div class="wrap">
  <div></div>
  <div class="b"></div>
  <div class="a b"></div>
  <div class="a c"></div>
</div>
 
<script>
var cls = [ "", "a", "a b", "a b c" ];
var divs = $( "div.wrap" ).children();
var appendClass = function() {
  divs.append(function() {
    return "<div>" + ( this.className || "none" ) + "</div>";
  });
};
 
appendClass();
 
$( "button" ).on( "click", function() {
  var tc = this.className || undefined;
  divs.toggleClass( tc );
  appendClass();
});
 
$( "a" ).on( "click", function( event ) {
  event.preventDefault();
  divs.empty().each(function( i ) {
    this.className = cls[ i ];
  });
  appendClass();
});
</script>
 
</body>
</html>

演示:

用法二

.toggleClass(  [state ] ) => jQuery

不推荐使用的版本:3.0

说明:

  • 添加的版本:1.4.toggleClass( [state ] )

    • state
      类型:Boolean
      一个布尔值,用于确定是否应添加或删除该类。
从 jQuery 3.0 开始不推荐使用此签名(仅!).

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .toggleClass()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。