當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。