jQuery事件对象总结


Posted in Javascript onOctober 17, 2016

 本人对jquery的event不懂,搜索了很多关于jquery event事件介绍,下面我来记录一下,有需要了解jquery event事件用法的朋友可参考。希望此文章对各位有所帮助。

学习要点:

事件对象 冒泡和阻止默认行为

一、事件对象

在JS中,我们已经详细讨论了JS的事件对象,这里就挑几个常用的探讨

<code class=" hljs xml"></code><div><code class=" hljs xml">
  <input type="text">
</code></div>

1.event.type 属性获取触发事件名

<code class=" hljs javascript">$("div").click(function (e) {
  console.log(e.type);    // click
});</code>

2.event.target获取绑定DOM的元素

<code class=" hljs javascript">$("div").click(function (e) {
  console.log(e.target);   // div
});</code>

3.event.data 获取额外数据,可以是数字、字符串、数组、对象

<code class=" hljs javascript">$("div").bind("click", {"name" : "zhang", "age" : 20}, function (e) {
  for(var i in e.data) {
    console.log(i + " = " + e.data[i]);
  }
})</code>

4.event.relatedTarget 获取移入移出目标点离开或进入的那个 DOM 元素

<code class=" hljs javascript">$("div").mouseover(function (e) {
  console.log(e.relatedTarget);    // body
});</code>

5.event.currentTarget 获取绑定的那个 DOM 元素,相当于 this,区别与 event.target

<code class=" hljs xml"><ul>
  <li>item1</li>
  <li>item2</li>
  <li>item3</li>
</ul></code>
<code class=" hljs javascript">// 事件委托
$("ul").click(function (e) {
  console.log(e.target);   // li
});
$("ul").click(function (e) {
  console.log(e.currentTarget);    // ul
});</code>

PS : target表示触发事件的DOM,currentTarget表示绑定事件的元素 6.event.result 表示获取上次事件的值

<code class=" hljs lua"></code><div><code class=" hljs lua">
  <input type="text">
$("div").click(function () {
  return "123";
});
$("div").click(function (e) {
  console.log(e.result);   // 123
});</code></div>

7.event.timeStamp 获取当前时间戳

<code class=" hljs javascript">$("div").click(function (e) {
  console.log(e.timeStamp);
});</code>

8.event.which 获取鼠标的左中右键

<code class=" hljs javascript">$("div").mousedown(function (e) {
  var key = '';
  switch (e.which) {
    case 1:
      key = "左键";
      break;
    case 2:
      key = "中键";
      break;
    case 3:
      key = "右键";
      break;
  }
  console.log(key);
});</code>

同时event.which也可以获取键盘上的键

<code class=" hljs javascript">$("input").keyup(function (e) {
  console.log(e.which);
});</code>

9.event.ctrlKey 判断是否按下了ctrl键

<code class=" hljs javascript">$("input").keyup(function (e) {
  console.log(e.ctrlKey);   // 返回布尔值
})</code>

10.获取鼠标当前的位置

<code class=" hljs avrasm">$(document).click(function (e) {
  console.log("screenX: " + e.screenX);
  console.log("pageX: " + e.pageX);
  console.log("clientX: " + e.clientX);
});</code>

二.冒泡和默认行为 1.事件冒泡和阻止冒泡 先来看看一个冒泡的例子

<code class=" hljs php"></code><div><code class=" hljs php">
  <input type="button" value="按钮">
$("input").click(function () {
  console.log("按钮被触发");
});
$("div").click(function () {
  console.log("div被触发");
});
$(document).click(function () {
  console.log("document被触发");
});
// 当单击按钮时,三个事件都被触发
// 当单击div时,div和document被触发
// 当单击document时,也仅有document事件被触发</code></div>

现在我们阻止冒泡,看看结果

<code class=" hljs javascript">$("input").click(function (e) {
  console.log("按钮被触发");
  e.stopPropagation();
});
$("div").click(function (e) {
  console.log("div被触发");
  e.stopPropagation();
});
$(document).click(function () {
  console.log("document被触发");
});</code>

无论你怎样单击按钮和div,它也只能触发自己的时间,因为冒泡被阻止了

2.阻止默认行为

<code class=" hljs lua"></code><div><code class=" hljs lua"> 
$("a").click(function (e) {
  e.preventDefault();
});</code></div>

3.同时阻止默认行为和冒泡

<code class=" hljs javascript">$("a").click(function (e) {
  console.log("a");
  e.stopPropagation();
  e.preventDefault();
});
$("div").click(function () {
  console.log("div");
});</code>

或者用 return false;

<code class=" hljs javascript">$("a").click(function (e) {
  console.log("a");
  return false;
});
$("div").click(function () {
  console.log("div");
});</code>

3.阻止事件冒泡和默认行为的一些方法

判断是否取消了默认行为

<code class=" hljs javascript">$("a").click(function (e) {
  e.preventDefault();
  console.log(e.isDefaultPrevented());  // true
})</code>

取消冒泡后取消后续的事件处理函数

<code class=" hljs javascript">$("a").click(function (e) {
  console.log("a");
  // e.preventDefault();   // 三个都触发
  // e.stopPropagation(); // 触发前两个
  // e.stopImmediatePropagation();  // 只触发第一个
});
$("a").click(function () {
  console.log("i am a");
}); 
$(document).click(function () {
  console.log("i am document");
})</code>

判断是否调用了 stopPropagation()方法

<code class=" hljs javascript">$("div").click(function (e) {
  e.stopPropagation();
  console.log(e.isPropagationStopped()); // true
})</code>
判断是否执行了 stopImmediatePropagation()方法
<code class=" hljs javascript">$('div').click(function (e) {
  e.stopImmediatePropagation();
  console.log(e.isImmediatePropagationStopped());   // true
});</code>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中attribute和property的区别详解
Jun 05 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
Mar 05 Javascript
使用javascript实现判断当前浏览器
Apr 14 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
Javascript BOM学习小结(六)
Nov 26 Javascript
jquery中实现时间戳与日期相互转换
Apr 12 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
vue实现2048小游戏功能思路详解
May 09 Javascript
node全局变量__dirname与__filename的区别
Jan 14 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
微信小程序实现侧边分类栏
Oct 21 Javascript
微信小程序 MINA文件结构
Oct 17 #Javascript
Jquery实现上下移动和排序代码
Oct 17 #Javascript
微信小程序 Page()函数详解
Oct 17 #Javascript
微信小程序 触控事件详细介绍
Oct 17 #Javascript
Angular2从搭建环境到开发步骤详解
Oct 17 #Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
Oct 17 #Javascript
学习Node.js模块机制
Oct 17 #Javascript
You might like
jquery实现excel导出的方法
2013/04/04 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
Python实战购物车项目的实现参考
2019/02/20 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
会计应聘求职信范文
2013/12/17 职场文书
合同专员岗位职责
2013/12/18 职场文书
展会邀请函范文
2014/01/26 职场文书
学习决心书范文
2014/03/11 职场文书
团支部建设方案
2014/05/02 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
五四青年节活动总结
2015/02/10 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS