深入理解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 相关文章推荐
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
Extjs学习笔记之七 布局
Jan 08 Javascript
Java 正则表达式学习总结和一些小例子
Sep 13 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
JS中动态创建元素的三种方法总结(推荐)
Oct 20 Javascript
JavaScript纯色二维码变成彩色二维码
Jul 23 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
解决VUE双向绑定失效的问题
Oct 29 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 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 imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
php删除指定目录的方法
2015/04/03 PHP
php简单截取字符串代码示例
2016/10/19 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
JSON取值前判断
2014/12/23 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
vuex学习之Actions的用法详解
2017/08/29 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
《世界多美呀》教学反思
2014/03/02 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
行政上诉状范文
2015/05/23 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
Java tomcat手动配置servlet详解
2021/11/27 Java/Android