深入理解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 相关文章推荐
JSONP 跨域共享信息
Aug 16 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
js控制鼠标事件移动及移出效果显示
Oct 19 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
Javascript获取图片原始宽度和高度的方法详解
Sep 20 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
JavaScript实现水平进度条拖拽效果
Jan 18 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
微信小程序实现文件、图片上传功能
Aug 18 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
Vue使用v-viewer实现图片预览
Oct 21 Javascript
原生JS实现pc端轮播图效果
Dec 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制作静态网站的模板框架(三)
2006/10/09 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
js arguments,jcallee caller用法总结
2013/11/30 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
js实现下一页页码效果
2017/03/07 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
python批量修改文件名的示例
2020/09/27 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
比较一下entity bean和session bean
2013/12/27 面试题
博士导师推荐信
2015/03/25 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
学校运动会加油词
2015/07/18 职场文书
六年级语文教学反思
2016/03/03 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
Golang的继承模拟实例
2021/06/30 Golang
一文带你探究MySQL中的NULL
2021/11/11 MySQL
Vue2.0搭建脚手架
2022/03/13 Vue.js
Flink 侧流输出源码示例解析
2022/09/23 Servers