jQuery---鋼琴案例 (按下1-9數字鍵,能觸發對應的mouseenter事件)

鋼琴案例

(按下1-9數字鍵,能觸發對應的mouseenter事件)javascript

 

1. 結合以前的學習,主要內容,就是on註冊keyup事件,函數裏傳入e, 用e.keyCode,來獲取1-9的數字的範圍。html

若是所按的按鍵在49-57的範圍裏,就去觸發mouseenter(or mouseleave)事件。java

怎麼觸發呢?讓.nav li的索引下標等於(code-49)jquery

2. 設置節流閥函數

 

      //彈起的時候,觸發mouseleave事件
      $(document).on("keyup", function (e) {
        // flag = true;
        // //獲取到按下的鍵
        var code = e.keyCode;
        if (code >= 49 && code <= 57) {
          //觸發對應的li的mouseleave事件
          $(".nav li").eq(code - 49).mouseleave();
        }
      });

 

 

 

 

下面的代碼是有bug的學習

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .nav {
      width: 900px;
      height: 60px;
      background-color: black;
      margin: 0 auto;
    }

    .nav li {
      width: 100px;
      height: 60px;
      /*border: 1px solid yellow;*/
      float: left;
      position: relative;
      overflow: hidden;
    }

    .nav a {
      position: absolute;
      width: 100%;
      height: 100%;
      font-size: 24px;
      color: white;
      text-align: center;
      line-height: 60px;
      text-decoration: none;
      z-index: 2;
    }

    .nav span {
      position: absolute;
      width: 100%;
      height: 100%;
      background-color: yellow;
      top: 60px;
    }
  </style>
  <script src="../jquery-1.12.4.js"></script>
  <script>
    $(function () {
      //給li註冊鼠標進入事件,讓li下面的span top:0  播放音樂
      $(".nav li").mouseenter(function () {
        $(this).children("span").stop().animate({ top: 0 });
        //播放音樂
        var idx = $(this).index();
        $(".nav audio").get(idx).load();
        $(".nav audio").get(idx).play();
      }).mouseleave(function () {
        $(this).children("span").stop().animate({ top: 60 });
      });

      //節流閥  :按下的時候,觸發,若是沒彈起,不讓觸發下一次
      //1. 定義一個flag
      var flag = true;

      //按下1-9這幾個數字鍵,能觸發對應的mouseenter事件
      $(document).on("keydown", function (e) {
        if (flag) {
          flag = false;
          //獲取到按下的鍵
          var code = e.keyCode;
          if (code >= 49 && code <= 57) {
            //觸發對應的li的mouseenter事件
            $(".nav li").eq(code - 49).mouseenter();
            // }
          }
        };
      });

      //彈起的時候,觸發mouseleave事件
      $(document).on("keyup", function (e) {
        flag = true;
        //獲取到按下的鍵
        var code = e.keyCode;
        if (code >= 49 && code <= 57) {
          //觸發對應的li的mouseleave事件
          $(".nav li").eq(code - 49).mouseleave();
        }
      });
    });
  </script>
</head>

<body>
  <div class="nav">
    <ul>
      <li>
        <a href="javascript:void(0);">導航1</a>
        <span></span>
      </li>
      <li><a href="javascript:void(0);">導航2</a><span></span></li>
      <li><a href="javascript:void(0);">導航3</a><span></span></li>
      <li><a href="javascript:void(0);">導航4</a><span></span></li>
      <li><a href="javascript:void(0);">導航5</a><span></span></li>
      <li><a href="javascript:void(0);">導航6</a><span></span></li>
      <li><a href="javascript:void(0);">導航7</a><span></span></li>
      <li><a href="javascript:void(0);">導航8</a><span></span></li>
      <li><a href="javascript:void(0);">導航9</a><span></span></li>
    </ul>

    <div>
      <audio src="mp3/1.ogg"></audio>
      <audio src="mp3/2.ogg"></audio>
      <audio src="mp3/3.ogg"></audio>
      <audio src="mp3/4.ogg"></audio>
      <audio src="mp3/5.ogg"></audio>
      <audio src="mp3/6.ogg"></audio>
      <audio src="mp3/7.ogg"></audio>
      <audio src="mp3/8.ogg"></audio>
      <audio src="mp3/9.ogg"></audio>
    </div>
  </div>
</body>

</html>
相關文章
相關標籤/搜索