深入理解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如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
Apr 20 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
Vue指令的钩子函数使用方法
Mar 20 Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
用VsCode编辑TypeScript的实现方法
May 07 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
Jul 23 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实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
PHP实现事件机制的方法
2015/07/10 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python协程之动态添加任务的方法
2019/02/19 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
我的画教学反思
2014/04/28 职场文书
中标通知书格式
2015/04/17 职场文书
儿子满月酒致辞
2015/07/29 职场文书
早恋主题班会
2015/08/14 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书