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 相关文章推荐
推荐dojo学习笔记
Mar 24 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
PHP中CURL的几个经典应用实例
Jan 23 Javascript
javascript中Date format(js日期格式化)方法小结
Dec 17 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
自动化测试读写64位操作系统的注册表
Aug 15 Javascript
H5实现中奖记录逐行滚动切换效果
Mar 13 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 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
php调用mysql存储过程实例分析
2014/12/29 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
django使用JWT保存用户登录信息
2020/04/22 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
新锐科技Java程序员面试题
2016/07/25 面试题
应聘医药代表职位求职信
2013/10/21 职场文书
年度评优评先方案
2014/06/03 职场文书
学校搬迁方案
2014/06/15 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
退学证明范本3篇
2014/10/29 职场文书
教育读书笔记
2015/07/02 职场文书
app场景下uniapp的扫码记录
2022/07/23 Java/Android