【jQuery中的事件】

javascript和html之间的交互是通过用户和浏览器操作页面时引发的事件来处理的,虽然传统的javascript能完成这些交互,但事
jQuery增加并扩充了基本事件处理机制。

【加载DOM】
1、执行时机
$(document).ready()方法和window.onload方法相似的功能,但在执行时机方面是有区别的,后者是等到页面中所有的元素完全加载到浏览器在执行,而前者是在DOM再如就绪是就可以执行。另外要注意一点,就是$(document).ready()内注册的事件,只要DOM就绪就会被执行,因此可能此时uansu的关联文件未下载完,例如图片等,要解决这个问题可以使用jQuery的另一个关于页面加载的方法——load()方法。该方法会在元素的onload()事件中绑定一个处理函数。
2、多次使用
就是说window.onload方法只能使用一次,而$(document).ready()方法可以多次使用。

【事件绑定】
可以使用bind()方法来对匹配的元素进行特定是事件绑定,调用格式为:bind(type [.data],fn);
参数说明:第一个参数指的是时间的类型,也可以自定义,第二个参数可选,作为对象属性值传递给事件对象到的额外数据对象。
第三个参数用来绑定的处理函数。
在用于标题链接显示内容的列子中步骤为:
——等待DOM加载完毕;
——找到“标题”所在的元素,绑定click事件;
——找到“内容”元素,如果内容元素是显示则隐藏,隐藏则显示。

改变绑定事件类型步骤:
——等待DOM加载完毕;
——找到“标题”所在的元素,绑定mouseover事件;
——找到“内容”元素,显示“内容”;
——找到“标题”所在的元素,绑定mouseout/事件;
——找到“内容”元素,隐藏“内容”;

【合称事件】
jQuery有两个合成事件:hover()方法和toggle()方法,这两个方法都属于jquery的自定义方法。
hover()方法用于模拟光标悬停事件。当光标移动到元素上时,会触发指定的第一个函数,当光标移除元素时会触发第二个函数。
toggle()方法:用于模拟鼠标连续单击事件。
两个方法的执行步骤为:
——等待DOM装载完毕;
——找到“标题”元素,添加toggle()方法,在该方法中定义两个函数,分别表示显示和隐藏;
——在显示函数里,给"标题"添加高亮class;
——在隐藏函数里,移除高亮。

【事件冒泡】
在页面上可以有多个事件,也可以多个元素响应同一个事件,当页面有多个元素,切都绑定了click事件,当单击子元素的click事件时,会从内到外的触发各个元素的click事件,就像冒泡一样,不断向上直至顶端。

事件冒泡引发的问题:事件冒泡会引发意料之外的效果,本来你只想触发一个事件的,结果全部触发了。
解决方案:
(1)事件对象:在程序中使用事件对象只需为函数添加一个参数:
$("element").blind("click",function(event){
   //
});
(2)停止事件冒泡:停止事件冒泡可以阻止事件中其他对象的事件处理函数执行。jQuery中提供了stopPropagation()方法来停止事件冒泡。
(3)阻止默认行为:网页中的元素有自己默认的行为,如:低级连接会跳转,单击提交按钮后表单会提交,有时候需要阻止元素的默认行为,jQuery提供了preventDefault()方法来阻止默认事件。如果想同时对事件对象停止冒泡和阻止默认行为i,可以在事件处理函数中返回false,这是对在事件对象上同时调用stopPropagation()方法和preventDefault()方法的简写。

例如:在表单事件中可以把   event.preventDefault();改为return false;
(4)事件捕获:事件捕获的过程和事件冒泡的恰好相反,事件捕获是从最顶端往下开始触发。

【事件对象的属性】
jQuery对事件对象的常用属性进行了封装,使得事件处理在各个浏览器上都兼容。
(1)event.type()方法:作用是获取事件的类型。
(2)event.preventDefault()和event.stopPropagation()方法在javascript中对IE是无效的,但是jQUERY对其进行了 封装,使得他得到了兼容。
(3)event.target()方法:作用是获取触发事件的元素,jquery对其进行封装后,避免了各个浏览器不同标准的差异。
(4)event.relatedTarget():mouseover和mouseout所发生的元素可以通过event.target来访问,相关元素是通过event.relatedTarget()来访问的。event.relatedTarget()在mouseover中相当于IE中的event.fromElement,在mouseout中相当于IE中的event.toElement(),jquery对其进行封装后,使他兼容各种浏览器。
(5)event.pageX和event.pageY:该方法作用是获取的光标相对于页面的X坐标和Y坐标。
(6)event.which:该方法作于是在鼠标单击事件中获取到鼠标的左中右键,即在键盘事件中获取键盘的按键,如:
$("a").mousedown(function(e){
alert(e.which)     / /1=鼠标左键;2=鼠标中建;3=鼠标右键。
});
(7)event.metaKey
针对不同浏览器中的<ctrl>按键解释不同,jQuery进行了封装。

【移出事件】
在事件的绑定中,可以多个元素绑定一个事件,亦可以一个元素绑定多个事件,同样也可以移除事件,jQuery提供了unbind()方法
:unbind([type],[data]);
第一个参数是事件类型,第二个参数是将要移除的函数,具体说明如下:
(1)如果没有参数则删除所有绑定的事件;
(2)如果提供了事件类型做参数,则只删除该类型的绑定事件;
(3)如果把在绑定时传递的处理参数作为第二个参数,则只有这个特定的处理函数会被删除。
移除“按钮”<button>元素上注册的事件时,可以只删除其中的一个事件,这个首先得为这些匿名处理函数指定一个变量。
另外,对于只需要触发一次,随后就要立即解除绑定的情况,jQuery提供了一种简写的方式——one()方法,可以为元素绑定事件
处理函数,当处理函数触发一次后,立即被删除。即在每个对象上,事件处理函数只会执行一次。one()方法的结构和bind()方法
的结构相似,用法也相同,使用one()方法为<button>元素绑定单击事件后,只要用户单击1次按钮时,处理函数才会执行,之后单击毫无作用。

【模拟操作】
1、常用模拟
以上例子都是用户必须通过单击按钮,才能触发click事件,但是有时需要模拟用户操作,来达到单击的效果。例如,在用户进入页面后,就触发click事件,而不需要用户去主动单击。
在jQUERY中用trigger()方法完成模拟操作:$("#btn").trigger("click");
这样页面装载完毕后,就会立即输出想要的效果,也可以直接简化写法:$("#btn").click();
2、触发自定义事件
trigger()方法不仅能触发浏览器支持的具有相同名称的事件,也可以触发自定义的事件。
3、传递数据
trigger(type,[data])方法:有两个参数,第一个参数是要触发的事件类型,第二个参数是要传递给事件处理函数的附加数据,以
数组形式。通常可以通过传递一个参数给回调函数来区别这次事件是代码触发的还是用户触发的。
4、执行默认操作
trigger()方法触发事件后,会执行浏览器的默认操作。例如表单的focus事件:
$("input").trigger("focus");
会使得<input>元素本生得到焦点。如果只想触发绑定的事件,不想执行浏览器默认操作,可以使用——triggerHandler()方法。
该方法会绑定事件,但不会得到焦点。

到这里jQuery的事件就说完了,还有一些其他的事件,没有具体细则,只有在平时的练习中不断学习和掌握。具体的举例也没说到,有读到的小伙伴就自行琢磨吧!

jQuery-中的事件的更多相关文章

  1. jQuery中的事件绑定方法

    在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...

  2. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  3. jQuery:详解jQuery中的事件(一)

    之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源.后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代 ...

  4. jQuery学习笔记(三)jQuery中的事件

    目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...

  5. Javascript事件模型系列(三)jQuery中的事件监听方式及异同点

    作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年 ...

  6. jQuery中的事件与动画 (你的明天Via Via)

    众所周知,页面在加载时,会触发load事件:当用户单击某个按钮时,会触发该按钮的click事件. 这些事件就像日常生活中,人们按下开关,灯就亮了(或者灭了),往游戏机里投入游戏币就可以启动游戏一样, ...

  7. Jquery中的事件和动画

    在学习Jquery中的过程中我们绝大部分都用到了事件的操作,也可以说事件是Jquery中必不可少的一部分,我们常见的一些事件有单击事件,鼠标事件,键盘事件等等.在Jquery中的学习中为了能使让页面以 ...

  8. jQuery中的事件机制深入浅出

    昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...

  9. jQuery中的事件和动画——《锋利的jQuery》(第2版)读书笔记2

    第4章 jQuery中的事件和动画 jQuery中的事件 加载DOM $(document).ready(function(){   // 编写代码... }); 可以简写成: $(function( ...

  10. 【jQuery基础学习】03 jQuery中的事件与动画

    关于jQuery中的事件 js与HTML之间的交互是通过用户和浏览器操作页面时引发的事件来处理的. jQuery增加并扩展了基本的事件处理机制,jQuery不仅提供了更加优雅的事件处理方法,而且极大地 ...

随机推荐

  1. 《HBase in Action》 第三章节的学习总结 ---- 如何编写和运行基于HBase的MapReduce程序

    HBase之所以与Hadoop是最好的伙伴,我理解就因为两点:1.HADOOP的HDFS,为HBase提供了分布式的存储方式:2.HADOOP的MR为HBase提供的分布式的计算方法.u 其中第一点, ...

  2. nginx反向代理带路径访问问题

    nginx的配置为192.168.0.219:80分别映射到upstream组192.168.0.55:8080和192.168.0.206:8080,那如何配置做到访问192.168.0.219:8 ...

  3. (1)安装kvm

    我的环境是redhat虚拟机,版本信息如下: [root@localhost ~]# cat /etc/issue Red Hat Enterprise Linux Server release 6. ...

  4. Ubuntu 18.04 初始化(server版本 )

    系统安装 ubuntu 18.04 英文版,创建个人用户 初始系统 a.修改ip shell> vim /etc/network/interfaces auto ens33 iface ens3 ...

  5. ViewPager系列之 仿魅族应用的广告BannerView(转)

    转载:http://www.open-open.com/lib/view/open1496585426285.html 使用方法:http://www.see-source.com/androidwi ...

  6. DM8168 自己主动登录root用户

    ①指定连接: <DM8168># ln -s /bin/busybox /sbin/getty ②改动/etc/inittab文件: <DM8168># vi /etc/ini ...

  7. 【Atheros】内核调试及网卡加载等问题小结

    我做的其他很多工作就比较有针对性了,不是什么大众性的问题,比如加统计代码.实现自己的速率调整算法或者加一些自己的控制什么的,就不再单独介绍了,最后呢再罗列一些小问题,供参考. 1. 加载模块(执行wi ...

  8. Spring Cloud 微服务四:熔断器Spring cloud hystrix

    前言:在微服务架构中,一般都是进程间通信,有可能调用链都比较长,当有底层某服务出现问题时,比如宕机,会导致调用方的服务失败,这样就会发生一连串的反映,造成系统资源被阻塞,最终可能造成雪崩.在sprin ...

  9. python基础-------python2.7教程学习【廖雪峰版】(二)

    2017年6月7日14:59:27任务:    看完python基础1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文 ...

  10. window下python安装pip

    python3.5 1.cmd下运行python -m pip install -U pip   2.Path添加python安装目录下的\Scripts,有pip.exe文件   3.重新打开cmd ...