jQuery 自定义事件的学习笔记
jquery中提供了两种方法可以绑定自定义事件:
bind()和one()
而绑定的自定义事件的触发,必须得用jquery中的
trigger()方法才能触发。
我们先来看on事件
代码如下 | 复制代码 |
$('.js-submit').on('click', function() { |
除开 click 事件,我们还有许多可以绑定的事件,比如 dblclick、blur、change 等等。
但这些事件有一个问题,语义(semantic)不明。click 代表什么?它表示我单击了一个元素,这个元素可以是 p,可以是 button,可以是其他任何 HTML 元素。但它也仅仅只是说明,一个点击事件在页面上发生了,至于事件引发什么结果,就需要我们自己定义。
举一个例子。一个输入框,用于输入用户名,一个按钮,用于提交用户名给服务器:
代码如下 | 复制代码 |
<input type='text' value='www.111cn.net' id='username'> |
这里,我们假设有三种情况:
用户提交空值
用户提交的用户名不存在
用户提交的用户名存在
经典的 JavaScript 写法是这样的:
代码如下 | 复制代码 |
$('.js-submit').on('click', function() { |
?能说这段代码有问题呢?它可用,也很直观。
但当我们要判断的情况不断增多,每种情况下执行的操作越来越多时,以上的写法就会变得非常丑陋。retcode 等于0是什么意思?等于-1又是什么意思?我们在给后期的阅读代码增加负担。
jQuery 提供的自定义事件可以引入语义,很好地挽救这类代码。
以上面的例子说,我们预设有三种情况,在 jQuery 里,我们将它们定义为三种事件:
代码如下 | 复制代码 |
$('.js-submit').on('click', function() { |
有人可能要失望了。不是说挽救代码的吗?怎么好像代码越写越多了。确实,相比经典写法,这里的代码略略多出一些,但我觉得这种小牺牲完全值得,因为现在代码加入了语义,可读性更好,不管后期是要维护还是要扩展,都会非常方便。
bind()方法:
看代码:
代码如下 | 复制代码 |
<h3>梦三秋博客</h3> |
看上面的代码,我们首先给h3标签用bind()方法绑定了一个自定义的事件“test”,触发这个事件会弹出对话框,显示h3中的文本内容。之后又给id为“demo”的按钮绑定了单击事件,在这个单击事件中,我们用了两次trigger方法来触发自定义事件,当我们点击这个按钮之后会触发两次h3标签绑定的自定义事件,结果就会弹出两次对话框。
jQuery 自定义事件的学习笔记的更多相关文章
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
2.1 jQuery选择器概述 2.1.1 什么使选择器 2.1.2 选择器的优势: 代码更简单,完善的检测机制 1.代码更简单 示例2-1 使用javascript实现隔行变色 < ...
- JS和JQuery中的事件托付 学习笔记
事件托付事实上并非一个非常高级的技巧,比方在一个页面里面.当仅仅存在两个button的时候.可能你给button加入监听是这种:(本文不考虑浏览器兼容性.关于事件的兼容性可參考前面的学习笔记) < ...
- 锋利的jQuery第2版学习笔记4、5章
第4章,jQuery中的事件和动画 注意:使用的jQuery版本为1.7.1 jQuery中的事件 JavaScript中通常使用window.onload方法,jQuery中使用$(document ...
- Hive自定义函数的学习笔记(1)
前言: hive本身提供了丰富的函数集, 有普通函数(求平方sqrt), 聚合函数(求和sum), 以及表生成函数(explode, json_tuple)等等. 但不是所有的业务需求都能涉及和覆盖到 ...
- Jquery 自定义事件实现发布/订阅
//用户点击logoff按钮时,广播一个自定义事件,给任何需要保存状态的感兴趣的观察者,然后导航到logoff页面 $('#logoff').click(function(){ $.event.tri ...
- jQuery基础与常用方法学习笔记
JQ与JS的关系:可以共存,不可混用.jq源码,源生JS面向对象写的 JQ写法 链式操作 $(‘#div’).html(‘hello’).css().click() 赋值取值合体 .html(‘h ...
- 锋利的jQuery第2版学习笔记1~3章
第1章,认识jQuery 注意:使用的jQuery版本为1.7.1 目前流行的JavaScript库 Prototype(http://www.prototypejs.org),成型早,面向对象的思想 ...
- jQuery中事件的学习
刚学习了jQuery中的事件,主要通过bind(),toggle(),hover()来主要实现,下面先说一说关于bind的想关要点. 1.bind方法. bind方法的主要参数为bind(type,f ...
- 锋利的jQuery第2版学习笔记8~11章
第8章,用jQuery打造个性网站 网站结构 文件结构 images文件夹用于存放将要用到的图片 styles文件夹用于存放CSS样式表,个人更倾向于使用CSS文件夹 scripts文件夹用于存放jQ ...
随机推荐
- ubuntu为IDE(Eclipse WebStorm)添加桌面快捷方式
在ubuntu15.10环境配置webstorm和eclipse的时候会下载官网上编译好的包, bin目录下面会有一个.sh文件(linux版本), 那么一般情况下,执行 ./sh就会启动IDE, 但 ...
- oracle连接数据的oci和thin的区别
1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因.2)原理上来看,thin是纯java实现 ...
- Codeforces gym 100685 E. Epic Fail of a Genie 贪心
E. Epic Fail of a GenieTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685 ...
- 不可不表的OSG智能指针之强指针与弱指针 《转载》
不可不表的OSG智能指针之强指针与弱指针 <转载> 使用OSG的人都知道OSG的内存管理方式采用了智能指针,通过智能指针的方式让OSG自己处理对象的销毁工作.在OSG中有两个智能指针类型, ...
- Anroid自定义RatingBar,显示半个(小数个)的stepSize时,变为整数个的问题
<RatingBar android:id="@+id/rb_starbar" style="@style/joblist_item_ratingbar_style ...
- C语言默认參数值的实现
from http://blog.csdn.net/pipisorry/article/details/25437893 C语言中没有參数默认值的概念,能够利用宏来模拟參数默认值: (对于有多个參数的 ...
- gdb在运行maintenance info program-spaces命令时coredump
coredump时的信息: (gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0 ...
- windows 下的命令行工具。。
1.powershell window自带..右下角搜索..powershell 2.conemu https://code.google.com/p/conemu-maximus5/wiki/Dow ...
- Android SDK安装时碰到的问题之解决办法
问题:hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com> Fetchin ...
- 纯C++ 连接SQL Server2005 数据库读写操作的小例子
一个测试c++链接 sql server 数据库的例子// 数据库说明// 数据库用户为 sa , 密码为 空// 数据库为 MyDB// 表为 UserInfo// 表字段为 Name . Pass ...