jQuery学习笔记——流水账part2
来源:互联网 发布:百度人工智能世界第一 编辑:程序博客网 时间:2024/06/04 18:19
事件处理方法
继续优雅的链式调用
$("p").click(function (e) { $(this).css("backgoundColor", "red"); });
这里设置单击任意p标签元素时,改变背景颜色为红色。
大多数的简单事件注册方法名和js原生的注册函数区别只在于一个on。
这里有两个特殊形式的方法hover() toggle()
前者传入两个参数可以给mouseenter和mouseleave注册处理程序
后者传入多个参数可以指定多个单击事件处理程序,按照传入参数的顺序来依次触发。
这些处理方法通常都具有一个唯一参数,即jQuery事件对象(这是jQuery自己定义的event对象,用来隐藏浏览器之间的实现差异)。但是如果使用tigger()方法来显式的触发事件,那么可以传入额外的参数
像这样的
$("#btn").click(function (e,a) { alert(a); });$("#btn").trigger("click", 213);
在页面载入的时候就会直接触发id为btn的元素的click方法,弹出一个213
这些处理方法如果返回一个false,那么该事件的默认行为以及接下来的冒泡都会被取消,等同于调用了event对象的preventDefault()和stopProragation()方法,也就是说,jQuery里面,要阻止元素冒泡和默认行为,就直接return一个false。
进一步,事件处理程序的高级注册
bind(type, [data], fn)
隐隐约约有点害怕这个词语了,不由得想起了MVVM里面的dataBinding。
可选的第二个参数,会被赋值给jQuery事件对象的data属性,然后可以在回调函数fn里面通过event.data来使用
function handler(event) { alert(event.data.foo);}$("p").bind("click", {foo: "bar"}, handler);
另外,type参数接受空格分开的时间类型列表
所以 下面两种绑定方式是一个意思
$("a").hover(function (e) { } ); $("a").bind("mouseenter mouseleave", function (e) { });
除了上面提到的一个注册多个事件,bind还允许为注册的事件处理程序指定命名空间(namespace)。如下,给mouseenter添加了一个myMod的命名空间
$("a").bind("mouseenter.myMod", function (e) { });
添加命名空间能够方便后续触发或者卸载特定空间下的处理程序,在模块化编程里面经常看见。
在使用unbind卸载的时候也请传入带命名空间的处理程序,如果不传参数会默认卸载元素的所有事件处理程序(仅限通过jQuery方法绑定的事件),如果不传命名空间,会让其他在本模块上注册了不同事件处理程序的人困扰,当然也可以通过传入第二个参数(事件处理程序函数的一个引用)来指定卸载
$("a").unbind("mouseenter", f);
差点忘了一个one()方法,顾名思义,这种方法绑定的事件处理程序只能触发一次,触发之后会自动销毁
事件处理方法其实也是getter和setter的合体
不带参数调用事件处理方法的时候其实等同于手动触发该事件,这和前面的tigger方法一个意思,但是这种手动方式依旧会冒泡,除非注册事件处理程序的时候return false或者stopPropagation。
$("#div3").click(); $("#div3").trigger(“click”);
回忆上面的命名空间,在tigger方法里面,可以传入带命名空间的事件处理程序,如果只想触发没有命名空间的事件处理程序,在事件类型后面加一个感叹号即可。
triggerHandler只会触发事件处理程序,而不会冒泡和执行默认程序。
事件还有另外的要说………
bind可以给元素以任意字符串作为事件类型名称的事件,然后使用trigger来触发。
delegate()/undelegated()和bind()/unbind()可以做同样的事情,但是区别在于通过delegate注册的事件,可以处理在注册之后新创建的元素的事件
delegate(selector, [Type], [Data], fn)
- jQuery学习笔记——流水账part2
- jQuery学习笔记——流水账part1
- STM32F4学习笔记7——USART Part2
- STM32学习笔记14——ADC part2
- 0701part2学习笔记
- python学习笔记 part2
- 基础学习篇-学习笔记流水账
- 流水账——12.15
- 随记——流水账
- Electron学习笔记Part2-HelloWorld
- 《软件调试》学习笔记——004 (第一章 软件调试基础 part2)
- CS231n 学习笔记(2)——神经网络 part2 :线性分类器,SVM
- CS231n 学习笔记(2)——神经网络 part2 :Softmax classifier
- 4.17学习流水账——GTSRB函数TrainTrafficSigns
- arm体系结构学习笔记 part2 -- 中断相关
- Struts2 学习笔记 11 Result part2
- Struts2 学习笔记13 OGNL part2
- Struts2 学习笔记16 struts标签 part2
- java验证码识别--5
- Java中线程池ExecutorService详细
- paper-image/video segmentation
- 作业(Job)内核对象
- 使用@ManyToOne并延时加载出现的问题以及解决总结
- jQuery学习笔记——流水账part2
- RCNN用到的SelectiveSearch的理解笔记
- 记录
- okHttp的简单封装使用
- 加密软件的未来发展方向 自动备份功能应该成为一种标准
- ZKFailoverController( zkfc)介绍
- Python爬虫利器:BeautifulSoup库
- php中多维数组排序
- JS为什么有时候要做两次encodeURI