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 按位与赋值运算符 (&amp;=)使用介绍
Feb 04 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
javascript使用正则表达式检测IP地址
Dec 03 Javascript
jquery使用each方法遍历json格式数据实例
May 18 Javascript
jQuery调用Webservice传递json数组的方法
Aug 06 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 Javascript
Vue组件和Route的生命周期实例详解
Feb 10 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
js实现延迟加载的几种方法详解
Jan 19 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截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
javascript编程起步(第七课)
2007/02/27 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
python实现猜单词游戏
2020/05/22 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
店长助理岗位职责
2013/12/13 职场文书
小学一年级评语大全
2014/04/22 职场文书
个人授权委托书模板
2014/09/14 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
合同范本之电脑出租
2019/08/13 职场文书
python 网络编程要点总结
2021/06/18 Python