jQuery事件总结(三)

一、 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.pageXevent.pageY2,,event.preventDefault()aURLevent.isDefaultPrevented()()event.stopPropagation()DOMevent.which1event.whichevent.keyCodeevent.charCode2event.which(mousedownmouseupevents)123event.currentTarget:DOMDOM,this(1)thisevent.targetjsthisevent.targetDOM(2).thisevent.targetdom,使jqueyjquerythis(this)的使用、event.target和$(event.target)的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值