深入理解jQuery 事件处理


Posted in Javascript onJune 14, 2016

浏览器的事件模型

DOM第0级事件模型

1.Event实例

他的属性提供了关于当前正被处理的已触发事件的大量信息。这包括一些细节,比如在哪个元素上触发的事件、鼠标事件的坐标以及键盘事件中单击了哪个键。

2.事件冒泡

当触发 dom 树中一个元素上的事件时,事件模型会检查这个元素是否已经创建了特定的事件处理器。如果是,就会调用已创建的事件处理器。然后,事件模型会检查目标元素的父元素,看其是否已经为此事件类型创建了处理器。如果是,就调用已创建的处理器,之后检查它的父元素,以及父元素的父元素,以此类推,直到 dom 树的顶部。

DOM第2级事件模型

IE事件模型

jQuery事件模型

使用jQuery绑定事件处理器

<html> 
<head> 
  <title>jQuery Events Example</title> 
  <script type="text/javascript" src="../scripts/jquery-1.7.1.js"></script> 
  <script type="text/javascript"> 
    $(function () { 
      $('#example') 
       .bind('click', function (event) { 
         alert('BOOM once!'); 
       }) 
       .bind('click', function (event) { 
         alert('BOOM twice!'); 
       }) 
       .bind('click', function (event) { 
         alert('BOOM three times!'); 
       }); 
    }); 
  </script> 
</head> 
 
<body> 
  <img id="example" src="example.jpg" /> 
</body> 
</html>

bind(eventType, data, handler); bind(eventMap)

可以为事件名称添加以圆点分隔的后缀来指定命名空间,以批量操作事件处理器。

可以通过单个bind()方法来为一个元素绑定多个事件。

$('.whatever').bind({
  click:function(event){/* handle */},
  mouseenter: function (event) {/* handle */ },
  mouseleave: function (event) {/* handle */ }
})

特定的事件绑定:

blur change click dblclick error focus focusin focusout keydown keypress keyup load mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup ready resize scroll select submit unload

当使用这些便捷方法时,event.data值是只读的。他们有一个参数 listener 函数,表示事件处理器。

focusin focusout

one(eventType, data, listener)

删除事件处理器

unbind(eventType, listener); unbind(event)

删除特定的事件处理器

删除命名空间中的所有事件处理器

$('*').unbind('.fred')Event实例

独立于浏览器的jQuery.Event属性和方法

名称 描述
altKey
ctrlKey
currentTarget
data
metaKey
pageX
pageY
relatedTarget
screenX
screenY
shiftKey
result
target
timestamp
type
which
preventDefault()
stopPropagation()
stopImmediatePropagation()
isPropagationStopped()
isImmediatePropagationStopped()

触发事件处理器

trigger(eventType, data)

triggerHandler(eventType, data)

触发的便捷方法

blur() change() click() dblclick() error() focus() focusin() focusout() keydown() keypress() keyup() load() mousedown() mouseenter() mouseleave() mousemove() mouseout() mouseover() mouseup() resize() scroll() select() submit() unload()

其他事件相关的方法

1.起切换作用的监听器

toggle(listener1, listener2, ...)

2.在元素上悬停鼠标

hover(enterHandler, leaveHandler); hover(handler)

充分利用(更多的)事件

过滤大的数据集合

通过模板复制创建元素

建立主体标记

添加新的过滤器

添加限定控件

删除不需要的过滤器和其他任务

以上这篇深入理解jQuery 事件处理就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
juqery 学习之四 筛选过滤
Nov 30 Javascript
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
May 25 Javascript
基于JS代码实现图片在页面中旋转效果
Jun 16 Javascript
Angular的MVC和作用域
Dec 26 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
详解Vue中一种简易路由传参办法
Sep 15 Javascript
JS实现碰撞检测的方法分析
Jan 19 Javascript
浅谈JS for循环中使用break和continue的区别
Jul 21 Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 Javascript
使用jquery获取url及url参数的简单实例
Jun 14 #Javascript
JS操作JSON方法总结(推荐)
Jun 14 #Javascript
JavaScript Promise 用法
Jun 14 #Javascript
Javascript基础_简单比较undefined和null 值
Jun 14 #Javascript
Javascript缓存API
Jun 14 #Javascript
JS修改地址栏参数实例代码
Jun 14 #Javascript
JS获取地址栏参数的两种方法(简单实用)
Jun 14 #Javascript
You might like
xml+php动态载入与分页
2006/10/09 PHP
PHP新手上路(九)
2006/10/09 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
php post换行的方法
2020/02/03 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
python中get和post有什么区别
2020/06/19 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
什么是属性访问器
2015/10/26 面试题
个人简历的自荐信
2013/10/23 职场文书
公积金单位接收函
2014/01/11 职场文书
领导检查欢迎词
2014/01/14 职场文书
开工典礼策划方案
2014/05/23 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2017春节晚会开幕词
2016/03/03 职场文书