深入理解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 调试利器 Firebug使用详解六
Jul 05 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
Bootstrap Table使用方法详解
Aug 01 Javascript
各种选择框jQuery的选中方法(实例讲解)
Jun 27 jQuery
C#实现将一个字符转换为整数
Dec 12 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
如何使用vuex实现兄弟组件通信
Nov 02 Javascript
微信小程序实现随机验证码功能
Dec 20 Javascript
VsCode与Node.js知识点详解
Sep 05 Javascript
vue实现节点增删改功能
Sep 26 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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python清除函数占用的内存方法
2018/06/25 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
戴尔英国官网:Dell英国
2017/05/27 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
StringBuilder和String的区别
2015/05/18 面试题
中学教师师德师风演讲稿
2014/08/22 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
护士心得体会范文
2016/01/25 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL