深入理解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 相关文章推荐
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
javascript与Python快速排序实例对比
Aug 10 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
Jul 22 Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
May 06 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
webpack打包非模块化js的方法
Oct 24 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
Mar 02 Javascript
用React Native制作一个简单的游戏引擎
May 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
php实现获取文件mime类型的方法
2015/02/11 PHP
超级退弹代码
2008/07/07 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python 和 JS 有哪些相同之处
2017/11/23 Python
分享6个隐藏的python功能
2017/12/07 Python
Python线性方程组求解运算示例
2018/01/17 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
儿童编程python入门
2018/05/08 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
python 内置模块详解
2019/01/01 Python
python遍历小写英文字母的方法
2019/01/02 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
python实现浪漫的烟花秀
2019/01/30 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
公司接待方案
2014/03/08 职场文书
超市督导岗位职责
2015/04/10 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
党员转正介绍人意见
2015/06/03 职场文书
南极大冒险观后感
2015/06/05 职场文书
夏洛特的网观后感
2015/06/15 职场文书
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android