深入理解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 相关文章推荐
jQuery select的操作实现代码
May 06 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
Dec 31 Javascript
JS实现的手机端精简幻灯片效果
Sep 05 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
JS实现改变HTML上文字颜色和内容的方法
Dec 30 Javascript
使用JS编写的随机抽取号码的小程序
Aug 11 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
Aug 17 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
2014过年倒计时示例
2014/01/31 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
php 可变函数使用小结
2018/06/12 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python笔记:mysql、redis操作方法
2017/06/28 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python中Unittest框架的具体使用
2019/08/27 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python中数字是否为可变类型
2020/07/08 Python
python MD5加密的示例
2020/10/19 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
应届毕业生求职信范文分享
2013/12/26 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
践行三严三实心得体会
2014/10/13 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
详解Spring事件发布与监听机制
2021/06/30 Java/Android