jQuery---钢琴案例 (按下1-9数字键,能触发对应的mouseenter事件)
钢琴案例
(按下1-9数字键,能触发对应的mouseenter事件)
1. 结合之前的学习,主要内容,就是on注册keyup事件,函数里传入e, 用e.keyCode,来获取1-9的数字的范围。
如果所按的按键在49-57的范围里,就去触发mouseenter(or mouseleave)事件。
怎么触发呢?让.nav li的索引下标等于(code-49)
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>
jQuery---钢琴案例 (按下1-9数字键,能触发对应的mouseenter事件)的更多相关文章
- Linux Vi/Vim 在插入模式下键盘右边数字键输入异常
问题:Linux在 Vi/Vim 在编辑文件时遇到一个问题,当我在 Insert 模式下进行修改文件内容的时候,用到了键盘(104键,右边带数字键那种)进行数字输入,当我输入数字 “5” 时,插入的数 ...
- jquery的change():下拉框值改变时触发
<script src="jquery.min.js" type="text/javascript"></script> <scr ...
- jQuery 设置select,radio的值,无法自动触发绑定的change事件
一.问题 今天在对select和radio做change事件绑定后,手动设置其value值,但是不能触发change事件 二.解决 使用trigger方法手动触发
- 【ngx-ueditor】百度编辑器按下Shift键不触发contentChange事件
背景:基于Angular 6,引入ngx-ueditor 发现现象:如果以Shift键+任意键结尾,则ngModel会丢失包含shift键的字符 例如:输入“ABC+AB++++”,则ngModel中 ...
- jQuery的案例及必知重要的jQuery选择器
Jquery能做什么 访问和操作DOM元素 控制页面样式 对页面事件进行处理 扩展新的jQuery插件 与Ajax技术完美结合 Jquery的优势 体积小,压缩后只有100KB左右 l强大的选择器 出 ...
- jQuery常见案例
jQuery常见案例 通过jQuery实现全选,反选取消: 选择 地址 端口 1.1.1.1 80 1.1.1.1 80 1.1.1.1 80 1.1.1.1 80 代码实现 <body> ...
- jQuery常用案例总结
模态对话框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- Jquery 分页案例
Jquery 分页案例 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...
- jQuery自定义漂亮的下拉框插件8种效果演示
原始的下拉框不好看这里推荐一个jQuery自定义漂亮的下拉框插件8种效果演示 在线预览 下载地址 实例代码 <!DOCTYPE html> <html lang="en&q ...
随机推荐
- Android: 关于WebView的loadData方法
关于WebView的loadData方法 Author : Aoyousatuo Zhao http://blog.sina.com.cn/aoyousatuo WebView是Android应用开发 ...
- supervisor管理tomcat
操作目的:用supervisor工具管理tomcat服务 配置环境,安装服务,以及多实例 脚本编辑: 前提 机器的opt目录下必须有jdk-8u131-linux-x64_.rpm 以及apache- ...
- AI: 字体设计中的贝塞尔曲线
http://www.xueui.cn/tutorials/illustrator-tutorials/designers-must-know-the-secret-of-the-bezier-cur ...
- CCF_201512-1_数位之和
水. #include<iostream> #include<cstdio> using namespace std; int main() { ; cin >> ...
- POJ_2941_矩阵
题目描述: 每组数据给定一个n*n的矩阵,选定不同行不同列的n个元素,求和,若所有选法所产生的和相等,则输出 homogeneous,否则输出not homogeneous. 描述: 数据挺大,爆搜肯 ...
- 微信小程序如何添加新的icon图标
第一步 先去阿里云下载图标http://www.iconfont.cn/ 根据需要把图片的代码下载下来,下载完成之后是一个 压缩包,解压压缩包里面有一个css的文件复制到项目中,更改后缀为wxss 第 ...
- python学习(4)循环语句
循环语句主要有两个,一个是 while :一个是for in range() 以案例来说明: 写一个猜数字的游戏,正确的数字等于38.如果数字等于38,则提示正确,然后结束:如果数字大于38则提示大了 ...
- CentOS 6.4安装mongo的php扩展包
最近安装mongo相关内容,因mongodb下载好解压即可使用,在这里我就不多说了,这里我分享下如何安装mongo的php扩展 首先下载扩展包https://github.com/mongodb/mo ...
- Generalized end-to-end loss for speaker verification
论文题目:2018_说话人验证的广义端到端损失 论文代码:https://google.github.io/speaker-id/publications/GE2E/ 地址:https://www.c ...
- prometheus operator(Kubernetes 集群监控)
一.Prometheus Operator 介绍 Prometheus Operator 是 CoreOS 开发的基于 Prometheus 的 Kubernetes 监控方案,也可能是目前功能最全面 ...