深入理解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扩展自写的 UI导航
Jan 13 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
Jun 04 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
关于JavaScript中的关联数组分析
Apr 09 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
用AngularJS的指令实现tabs切换效果
Aug 31 Javascript
js判断手机系统是android还是ios
Mar 07 Javascript
Vue声明式渲染详解
May 17 Javascript
vue 项目如何引入微信sdk接口的方法
Dec 18 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
Sep 21 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中使用file_get_contents post数据代码例子
2015/02/13 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
RequireJs的使用详解
2017/02/19 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
Python中使用Inotify监控文件实例
2015/02/14 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
python爬取淘宝商品销量信息
2018/11/16 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
pandas中ix的使用详细讲解
2020/03/09 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
乐观大学生的自我评价
2014/01/10 职场文书
班级安全教育实施方案
2014/02/23 职场文书
班级旅游计划书
2014/05/03 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书