深入理解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 写类方式之十
Jul 05 Javascript
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
捕获和分析JavaScript Error的方法
Mar 25 Javascript
jquery实现的树形目录实例
Jun 26 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
Dec 06 Javascript
非常漂亮的相册集 使用jquery制作相册集
Apr 28 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
通过jsonp获取json数据实现AJAX跨域请求
Jan 22 Javascript
JS使用new操作符创建对象的方法分析
May 30 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
如何使JavaScript休眠或等待
Apr 27 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
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
php输出xml属性的方法
2015/03/19 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
合作意向书格式及范文
2014/03/31 职场文书
入职担保书怎么写
2014/05/12 职场文书
学习型班组申报材料
2014/05/31 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
行政撤诉申请书
2015/05/18 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers