深入理解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 相关文章推荐
JS类中定义原型方法的两种实现的区别
Mar 08 Javascript
pjblog修改技巧汇总
Mar 12 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
Aug 29 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
Jul 31 Javascript
JSON 对象未定义错误的解决方法
Sep 29 Javascript
JS实现一个简单的日历
Feb 22 Javascript
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 Javascript
js+canvas实现画板功能
Sep 13 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 常见郁闷问题答解
2006/11/25 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
python得到windows自启动列表的方法
2018/10/14 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
门卫班长岗位职责
2013/12/15 职场文书
运动会通讯稿100字
2014/01/31 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
个人事迹材料范文
2014/12/29 职场文书
机关保密工作承诺书
2015/05/04 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
家长会感言
2015/08/01 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
Redis 哨兵机制及配置实现
2022/03/25 Redis