一、 jQuery 事件的绑定和事件的解绑。
(1)事件的绑定和解绑 on()的多个事件绑定:
我们之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,所有这类事件都是属于快捷处理。翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个"on"方法来实现的。
jQuery on()方法是官方推荐的绑定事件的一个方法。
基本用法:on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数。
最常见的给元素绑定一个点击事件,对比一下快捷方式与on方式的不同:
$("#elem").click(function(){…}) //快捷方式
$("#elem").on(‘click’,function(){…}) //on方式
最大的不同点就是on是可以自定义事件名,当然不仅仅只是如何,继续往下看,多个事件绑定同一个函数:
$("#elem").on(“mouseover mouseout”,function(){…});
①通过空格分离,传递不同的事件名,可以同时绑定多个事件,多个事件绑定不同函数。
$("#elem").on({
mouseover:function(){…},
mouseout:function(){…},
click:function(){…} });
②通过空格分离,传递不同的事件名,可以同时绑定多个事件,每一个事件执行自己的回调方法
【 //给元素绑定一个点击事件 on方式
$("#div1").on(“click”, function (e) {
$(this).text(“触发了:” + e.type); });
//多个事件绑定同一个函数
$("#div2").on(“mousedown mouseup”, function (e) {
$(this).text(“触发了:” + e.type); });
//多个事件绑定不同函数
$("#div3").on({ mousedown: function () {
$(this).attr(“class”,“bgGreen”); },
mouseup: function () {
$(this).removeAttr(“class”); } }); 】
(2)卸载事件off()方法:
①通过.on()绑定的事件处理程序;
②通过off() 方法移除该绑定;
③根据on绑定事件的一些特性,off方法也可以通过相应的传递组合的事件名,名字空间,选择器或处理函数来移除绑定在元素上指定的事件处理函数。当有多个过滤参数时,只有与这些参数完全匹配的事件处理函数才会被移除。
绑定2个事件: $(“elem”).on(“mousedown mouseup”,fn);
删除一个事件: $(“elem”).off(“mousedown”);
删除所有事件: $(“elem”).off(“mousedown mouseup”);
快捷方式删除所有事件,这里不需要传递事件名了,节点上绑定的所有事件讲全部销毁: $(“elem”).off();
演示时取消注释: $("#div2").off(“mousedown”); //或: $("#div3").off();
二、事件对象:Query事件对象的属性和方法。
事件对象的属于与方法有很多,但是我们经常用的只有那么几个,这里我主要说下作用与区别:
event.type:获取事件的类型,触发元素的事件类型。
(
"
a
"
)
.
c
l
i
c
k
(
f
u
n
c
t
i
o
n
(
e
v
e
n
t
)
a
l
e
r
t
(
e
v
e
n
t
.
t
y
p
e
)
;
/
/
"
c
l
i
c
k
"
事
件
/
鼠
标
单
击
事
件
)
;
e
v
e
n
t
.
p
a
g
e
X
和
e
v
e
n
t
.
p
a
g
e
Y
:
获
取
鼠
标
当
前
相
对
于
页
面
的
坐
标
。
通
过
这
2
个
属
性
,
可
以
确
定
元
素
在
当
前
页
面
的
坐
标
值
,
鼠
标
相
对
于
文
档
的
左
边
缘
的
位
置
(
左
边
)
与
(
顶
边
)
的
距
离
,
简
单
来
说
是
从
页
面
左
上
角
开
始
,
即
是
以
页
面
为
参
考
点
,
不
随
滑
动
条
移
动
而
变
化
。
e
v
e
n
t
.
p
r
e
v
e
n
t
D
e
f
a
u
l
t
(
)
方
法
:
阻
止
默
认
行
为
。
这
个
用
的
特
别
多
,
在
执
行
这
个
方
法
后
,
如
果
点
击
一
个
链
接
(
a
标
签
)
,
浏
览
器
不
会
跳
转
到
新
的
U
R
L
去
了
。
我
们
可
以
用
e
v
e
n
t
.
i
s
D
e
f
a
u
l
t
P
r
e
v
e
n
t
e
d
(
)
来
确
定
这
个
方
法
是
否
(
在
那
个
事
件
对
象
上
)
被
调
用
过
了
。
e
v
e
n
t
.
s
t
o
p
P
r
o
p
a
g
a
t
i
o
n
(
)
方
法
:
阻
止
事
件
冒
泡
。
事
件
是
可
以
冒
泡
的
,
为
防
止
事
件
冒
泡
到
D
O
M
树
上
,
也
就
是
不
触
发
的
任
何
前
辈
元
素
上
的
事
件
处
理
函
数
。
e
v
e
n
t
.
w
h
i
c
h
:
获
取
在
鼠
标
单
击
时
,
单
击
的
是
鼠
标
的
哪
个
键
。
(
1
)
e
v
e
n
t
.
w
h
i
c
h
将
e
v
e
n
t
.
k
e
y
C
o
d
e
和
e
v
e
n
t
.
c
h
a
r
C
o
d
e
标
准
化
了
。
(
2
)
e
v
e
n
t
.
w
h
i
c
h
也
将
正
常
化
的
按
钮
按
下
(
m
o
u
s
e
d
o
w
n
和
m
o
u
s
e
u
p
e
v
e
n
t
s
)
,
左
键
报
告
1
,
中
间
键
报
告
2
,
右
键
报
告
3
。
e
v
e
n
t
.
c
u
r
r
e
n
t
T
a
r
g
e
t
:
在
事
件
冒
泡
过
程
中
的
当
前
D
O
M
元
素
。
冒
泡
前
的
当
前
触
发
事
件
的
D
O
M
对
象
,
等
同
于
t
h
i
s
。
注
意
:
(
1
)
t
h
i
s
和
e
v
e
n
t
.
t
a
r
g
e
t
的
区
别
:
j
s
中
事
件
是
会
冒
泡
的
,
所
以
t
h
i
s
是
可
以
变
化
的
,
但
e
v
e
n
t
.
t
a
r
g
e
t
不
会
变
化
,
它
永
远
是
直
接
接
受
事
件
的
目
标
D
O
M
元
素
;
(
2
)
.
t
h
i
s
和
e
v
e
n
t
.
t
a
r
g
e
t
都
是
d
o
m
对
象
,
如
果
要
使
用
j
q
u
e
y
中
的
方
法
可
以
将
他
们
转
换
为
j
q
u
e
r
y
对
象
。
比
如
t
h
i
s
和
("a").click(function(event) { alert(event.type); // "click"事件/鼠标单击事件 }); event.pageX 和 event.pageY:获取鼠标当前相对于页面的坐标。通过这2个属性,可以确定元素在当前页面的坐标值,鼠标相对于文档的左边缘的位置(左边)与 (顶边)的距离,简单来说是从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化。 event.preventDefault() 方法:阻止默认行为。这个用的特别多,在执行这个方法后,如果点击一个链接(a标签),浏览器不会跳转到新的 URL 去了。我们可以用 event.isDefaultPrevented() 来确定这个方法是否(在那个事件对象上)被调用过了。 event.stopPropagation() 方法:阻止事件冒泡。事件是可以冒泡的,为防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数。 event.which:获取在鼠标单击时,单击的是鼠标的哪个键。 (1) event.which 将 event.keyCode 和 event.charCode 标准化了。 (2) event.which也将正常化的按钮按下(mousedown 和 mouseupevents),左键报告1,中间键报告2,右键报告3。 event.currentTarget : 在事件冒泡过程中的当前DOM元素。冒泡前的当前触发事件的DOM对象, 等同于this。 注意:(1)this和event.target的区别: js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素; (2).this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象。比如this和
("a").click(function(event)alert(event.type);//"click"事件/鼠标单击事件);event.pageX和event.pageY:获取鼠标当前相对于页面的坐标。通过这2个属性,可以确定元素在当前页面的坐标值,鼠标相对于文档的左边缘的位置(左边)与(顶边)的距离,简单来说是从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化。event.preventDefault()方法:阻止默认行为。这个用的特别多,在执行这个方法后,如果点击一个链接(a标签),浏览器不会跳转到新的URL去了。我们可以用event.isDefaultPrevented()来确定这个方法是否(在那个事件对象上)被调用过了。event.stopPropagation()方法:阻止事件冒泡。事件是可以冒泡的,为防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数。event.which:获取在鼠标单击时,单击的是鼠标的哪个键。(1)event.which将event.keyCode和event.charCode标准化了。(2)event.which也将正常化的按钮按下(mousedown和mouseupevents),左键报告1,中间键报告2,右键报告3。event.currentTarget:在事件冒泡过程中的当前DOM元素。冒泡前的当前触发事件的DOM对象,等同于this。注意:(1)this和event.target的区别:js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;(2).this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象。比如this和(this)的使用、event.target和$(event.target)的使用。
jQuery事件总结(三)
最新推荐文章于 2021-12-18 15:20:14 发布