JQuery中的事件对象

简介: JQuery中的事件对象

移动端touchEvent事件,在Jquery被封装在originalEvent属性中,调用方法,例如:e.originalEvent.touches[0].clientX;

原因: js事件有很多种:

鼠标事件:mouseEvent

触摸与手势事件:touchEvent

焦点事件:FocusEvent

键盘事件:keyboardEvent

等等,还有很多事件类型。在jquery中不同的事件类型被指向新的属性originalEvent中,即originalEvent:touchEvent,所以访问touchEvent中的属性,需要前面加一个originalEvent,例如e.originalEvent.touches[0].clientX

对其中的几个进行说明:

//通过 event.type 属性获取触发事件名
$(‘input’).click(function (e) {
alert(e.type);
});
//通过 event.data 获取额外数据,可以是数字、字符串、数组、对象
$(‘input’).bind(‘click’, 123, function () {      //传递 data 数据
alert(e.data);                                   //获取数字数据123
});

注意:如果字符串就传递:‘123’、如果是数组就传递:[123,‘abc’],如果是对象就传递:{user : ‘Lee’, age : 100}。数组的调用方式是:e.data[1],对象的调用方式是:e.data.user。

**//event.data **获取额外数据,对于封装的简写事件也可以使用
$(‘input’).click({user : ‘Lee’, age : 100},function (e) {
alert(e.data.user);
});

PS:键值对的键可以加上引号,也可以不加;在调用的时候也可以使用数组的方式:alert(e.data[‘user’]);

区别:target**,currentTarget****,relatedTarget:**

//通过 event.target 获取触发事件的 DOM 元素
$(‘input’).click(function (e) {
alert(e.target);
});
//relatedTarget获取临近元素
//获取移入到 div 之前的那个 DOM 元素
$(‘div’).mouseover(function (e) {
alert(e.relatedTarget);
});
//获取移出 div 之后到达最近的那个 DOM 元素
$(‘div’).mouseout(function (e) {
alert(e.relatedTarget);
});
//获取绑定的那个 DOM 元素,相当于 this,区别与 event.target
$(‘div’).click(function (e) {
alert(e.currentTarget);
});

PS:event.target 得到的是触发元素(比如点击事件,即具体点击的那个元素)的 DOM,event.currentTarget 得到的是监听元素(即绑定的那个元素)的DOM。相当于this, this 也是得到监听元素的 DOM。

//result获取上一次相同事件的返回值
$(‘div’).click(function (e) {
return ‘123’;
});
$(‘div’).click(function (e) {
alert(e.result);
});
//which获取鼠标的左中右键
$(‘div’).mousedown(function (e) {
alert(e.which);
});
//which获取键盘的按键
$(‘input’).keyup(function (e) {
alert(e.which);
});
//获取触发元素鼠标当前的位置
$(document).click(function (e) {
alert(e.screenY+ ‘,’ + e.pageY + ‘,’ + e.clientY);
});

PS:pageX和pageY获取的是距离页面原点的位置;screenX和screenY获取的是距离显示屏的位置;clientX和clientY获取的是距离页面视口的距离。在没有滚动条的时候,pageY和clientY在数值上是一样的。当有滚动条的时候,pageY会明显变大,因为它是相对于页面原点。

二.冒泡和默认行为

阻止冒泡:

如果在页面中重叠了多个元素, 并且重叠的这些元素都绑定了同一个事件, 那么就会出现冒泡问题。

示例:

**//HTML **页面
1
2
3
1 //三个不同元素触发事件
2
3 $(‘input’).click(function () {
4
5 alert(‘按钮被触发了!’);
6
7 });
8
9 $(‘div’).click(function () {
10
11 alert(‘div 层被触发了!’);
12
13 });
14
15 $(document).click(function () {
16


相关文章
|
2月前
|
JavaScript
jQuery事件2-第6次课-给未来的元素绑事件-事件对象-JS盒模型-附案例、任务
jQuery事件2-第6次课-给未来的元素绑事件-事件对象-JS盒模型-附案例、任务
48 0
|
JavaScript
jquery事件对象-48
jquery事件对象-48
68 0
jquery事件对象-48
|
JavaScript 开发者
jQuery_事件对象 | 学习笔记
快速学习jQuery_事件对象
290 0
jQuery_事件对象 | 学习笔记
|
JavaScript 前端开发 开发者
jQuery_事件对象|学习笔记
快速学习 jQuery_事件对象
192 0
|
JavaScript
jQuery事件对象---常见属性
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.
773 0
|
Web App开发 存储 JavaScript
从零开始学习jQuery (五) 事件与事件对象
原文:从零开始学习jQuery (五) 事件与事件对象 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery...
1128 0
|
2月前
|
JavaScript
jQuery图片延迟加载插件jQuery.lazyload
jQuery图片延迟加载插件jQuery.lazyload
|
6天前
|
设计模式 JavaScript 前端开发
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
必知的技术知识:jQuery插件开发精品教程,让你的jQuery提升一个台阶
12 1