jQuery事件的绑定、触发、及监听方法简单说明


Posted in Javascript onMay 10, 2016

如果你在写文章或者 Demo,为了简单,你当然可以用事件监听函数,以及那些事件对象提供的方法等。但在实际中,有一些方法和属性是有兼容性问题的,所以我们会使用 jQuery 来消除兼容性问题。

下面简单的来说一下 jQuery 中事件的基础操作。

绑定事件和事件代理

在 jQuery 中,提供了诸如 click() 这样的语法糖来绑定对应事件,但是这里推荐统一使用 on() 来绑定事件。语法:

.on( events [, selector ] [, data ], handler )

events 即为事件的名称,你可以传递第二个参数来实现事件代理,具体文档.on() 这里不再赘述。

处理过兼容性的事件对象(Event Object)

事件对象有些方法等也有兼容性差异,jQuery 将其封装处理,并提供跟标准一直的命名。

如果你想在 jQuery 事件回调函数中访问原来的事件对象,需要使用 event.originalEvent,它指向原生的事件对象。

触发事件 trigger 方法

点击某个绑定了 click 事件的节点,自然会触发该节点的 click 事件,从而执行对应回调函数。

trigger 方法可以模拟触发事件,我们单击另一个节点 elementB,可以使用:

$(elementB).on('click', function(){
 $(elementA).trigger( "click" );
});

事件监听
jQuery 中的事件监听,完全可以用 addEventListener/attachEvent 模拟,分别对应于现代浏览器和 IE ,可以把两个方法封装一下,但是为了方便,这里把其他事件相关处理,如移除事件监听、阻止默认事件等方法统一写在一个对象中,方便调用,具体代码如下:

// 事件处理对象
 
var EventUtil = {
  
 // 添加事件监听 
 add: function(element, type, callback){
   
  if(element.addEventListener){
   element.addEventListener(type, callback, false);
  } else if(element.attachEvent){
   element.attachEvent('on' + type, callback);
  } else {
   element['on' + type] = callback;
  }
 },
 
 // 移除事件监听
 remove: function(element, type, callback){
   
  if(element.removeEventListener){
   element.removeEventListener(type, callback, false);
  } else if(element.detachEvent){
   element.detachEvent('on' + type, callback);
  } else {
   element['on' + type] = null;
  }
 
 },
 
 // 跨浏览器获取 event 对象
 getEvent: function(event){
  
  return event ? event : window.event;
 },
 
 // 跨浏览器获取 target 属性
 getTarget: function(event){
   
  return event.target || event.srcElement;
 },
 
 // 阻止事件的默认行为
 preventDefault: function(event){
  
  if(event.preventDefault){
   event.preventDefault();
  } else {
   event.returnValue = false;
  }
 },
 
 // 阻止事件流或使用 cancelBubble
 stopPropagation: function(){
   
  if(event.stopPropagation){
   event.stopPropagation();
  } else {
   event.cancelBubble = true;
  }
 }
 
};
 
// 使用例子
var at = document.getElementbyId('atemp');
EventUtil.add(at, 'click', function(){
 
 console.log('被点击了');
 
 event = EventUtil.getEvent(event); // 跨浏览器获取 event 对象
 EventUtil.preventDefault(event); // 阻止默认事件
});
Javascript 相关文章推荐
jquery事件机制扩展插件 jquery鼠标右键事件
Dec 21 Javascript
javascript 图片裁剪技巧解读
Nov 15 Javascript
Jquery解析json数据详解
Dec 26 Javascript
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
浅谈JavaScript事件的属性列表
Mar 01 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
May 17 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
Jun 23 Javascript
微信小程序 flex实现导航实例详解
Apr 26 Javascript
微信小程序实现动态列表项的顺序加载动画
Jul 25 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
Jul 14 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
网页前端登录js按Enter回车键实现登陆的两种方法
May 10 #Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 #Javascript
JS实现登录页面记住密码和enter键登录方法推荐
May 10 #Javascript
详解JavaScript中的自定义事件编写
May 10 #Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 #Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
May 10 #Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 #Javascript
You might like
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
简单的js分页脚本
2009/05/21 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
linux下python抓屏实现方法
2015/05/22 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
初中同学聚会邀请函
2014/02/03 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
计划生育工作汇报
2014/10/28 职场文书