深入理解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 相关文章推荐
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
Jun 25 Javascript
js clearInterval()方法的定义和用法
Nov 11 Javascript
由浅入深剖析Angular表单验证
Jul 14 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
Nov 16 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
Vue.Draggable实现拖拽效果
Jul 29 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 Javascript
百度小程序自定义通用toast组件
Jul 17 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
Oct 02 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 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
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
JS判定是否原生方法
2013/07/22 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
[10:39]DOTA2上海特级锦标赛音乐会纪录片
2016/03/21 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python实现k-means聚类算法
2018/02/23 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
什么是Python包的循环导入
2020/09/08 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
美国知名艺术画网站:Art.com
2017/02/09 全球购物
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
财务人员求职自荐书范文
2014/02/10 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
居安思危观后感
2015/06/11 职场文书
四年级数学教学反思
2016/02/16 职场文书