JQuery點滴之toggle

來源:互聯網
上載者:User
  今天針對這個JQuery裡面的toggle聊幾句,文章中涉及到了一些問題望牛牛們能幫忙解惑一下。
  今天重點一個toggle(fn,fn,….)函數,主要是用來切換某個事件的輪換操作。
  比如:對一個按鈕的點擊事件和一個DIV的背景,點擊一次按鈕,將DIV的背景顯示為藍色,點擊第二次的時候要將DIV的
背景色改為黑色。
  我們定義的HTML代碼如下:
   1:  <body>
   2:  <input type="button" id="btnShow" value="Toggle"/>
   3:  <div id="DivToggle">此處顯示  id "DivToggle" 的內容</div>
   4:  </body>

     定義的最初的樣式如下:

   1:  #DivToggle {
   2:      height: 150px;
   3:      width: 200px;
   4:      margin: 50px;
   5:      background-color: #6CC;
   6:  }

 

      在toggle(fn,fn,….);先明白一個toggle()的函數,主要是用來切換元素的顯示狀態。如果一個元素是顯示的,那麼調用.toggle()之後就變得隱藏了。

      JQuery代碼:

   1:      <script type="text/javascript">
   2:          $(
   3:          function() {
   4:          $("#btnShow").click(function(event) {
   5:                  $("#DivToggle").toggle();
   6:              });
   7:          }
   8:          );
   9:      </script>

      點擊按鈕之後DIV隱藏,再次點擊DIV顯示,然後迴圈。

      這裡我們可以手動設定元素的顯示和隱藏,顯示:toggle(true);隱藏:toggle(false);

     我們還可以為元素的隱藏和顯示設定速度。

   1:   $("#DivToggle").toggle(600); 

 

     當然到這裡我們可以想到我們經常在網頁中碰到的將滑鼠移上去顯示出來,然後滑鼠移開則隱藏掉的效果。

     這裡當然用到了一個hover(fnover,fnout)事件。我們只要將fnover,和fnout設定為以上的toggle(600)即可;

     這裡的fnover是滑鼠移上去的事件函數, fnout是滑鼠移開的事件函數。

    我們將toggle(600)單獨設定為一個函數來調用,這樣看起來代表比較易讀。

   1:      <script type="text/javascript">
   2:          $(
   3:   
   4:          function(event) {
   5:              $("#btnShow").hover(OverOut, OverOut);
   6:              function OverOut(event) {
   7:                  $("#DivToggle").toggle(600);
   8:              }
   9:          }
  10:          );
  11:      </script>

這樣我們把滑鼠移動到按鈕上面,然後移開,就可以看到DivToggle的隱藏和顯示的效果了。

為了示範toggle(fn,fn,…)是輪換操作的,我們使用上面的一個函數,然後再加一個使用btnShow的Click事件先隱藏顯示DIV,然後該表DIV的樣式。

顯示隱藏的代碼可以這樣(事實上這段代碼是有問題的,但是居然這樣寫也能實現要的效果):

   1:      <script type="text/javascript">
   2:          $(
   3:          function(event) {
   4:              function OverOut(event) {
   5:                  $("#DivToggle").toggle(600);
   6:              }
   7:              $("#DivToggle").toggle(function() {
   8:                  $("#btnShow").click(OverOut);
   9:              }, function() {
  10:                  $("#btnShow").click(OverOut);
  11:              });
  12:          }
  13:          );
  14:      </script>
   回過頭來看這段代碼覺得很有問題,本身toggle(fn,fn,…)是用來給指定的元素加上Click事件,然後再對這個元素迴圈做toggle
裡面的那些函數。突然感覺有點攪在那裡了。像麻花一樣。望牛牛能解釋一下。
   這樣為了示範toggle的輪循函數的效果就沒有辦法,通過單擊按鈕,再改變Div的樣式了。

改變DIV樣式的代碼這樣:

   1:      <script type="text/javascript">
   2:          $(
   3:          function(event) {
   4:              function OverOut(event) {
   5:                  $("#DivToggle").toggle(600);
   6:              }
   7:              $("#DivToggle").toggle(function() {
   8:                  $(this).click(function() { $(this).css("background", "Blue"); });
   9:              }, function(event) {
  10:                  $(this).click(function() { $(this).css("background", "Green"); });
  11:              });
  12:          }
  13:          );
  14:      </script>

   到這裡我突然想到,要實現以上的效果,那就直接把事件載入到按鈕上,也就是”btnShow”上面也就是先隱藏顯示,然後改變DIV的樣式。詳細的代碼如下:

   1:      <script type="text/javascript">
   2:          $(
   3:          function(event) {
   4:   
   5:              function OverOut(event) {
   6:                  $("#DivToggle").toggle(600);
   7:              }
   8:   
   9:              $("#btnShow").toggle(
  10:                 OverOut, OverOut,
  11:                 function() { $("#DivToggle").css({ "background": "Green" }); },
  12:                 function() { $("#DivToggle").css({ "background": "Blue" }); }
  13:              );
  14:   
  15:          }
  16:          );
  17:      </script>

這樣能實現以上要的效果,就是先隱藏,再顯示,再改變樣式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.