Jquery系列(四) 事件处理

来源:互联网 发布:关于地球的软件 编辑:程序博客网 时间:2024/05/20 18:16

引言:

               事件:可以被控件识别的操作,控件对象和具体方法之间的联系桥梁。

概述:

              jQuery的事件处理程序:当HTML页面中发生某些事件时所调用的方法,jQuery事件处理方法是jQuery中的核心函数,jQuery通过DOM为元素添加事件。

内容:

              jQuery事件的具体内容,小编用一幅图呈现给大家:

                             

          这幅图看起来很简单,但是包含了很多jQuery的基础知识概念。

          一  我们先从jQuery的处理机制开始说,那么jQuery是如何实现事件处理的哪?在jQuery中一共存在俩种方法,一是通过修改DOM属性的方式来添加事件,示例代码如下:其中字体加粗的就是通过把一个函数赋给给了一个button的onclick事件属性。

<html>    <head>        <script src="jquery.js" type="text/javascript"></script>        <script type="text/javascript">            function showMsg(){                alert("我是李明");            }            $(function(){                document.getElementById("btn").onclick = showMsg;            });         </script>    </head>    <body>        <input type="button" id="btn" value="Click me!"/>    </body></html>
当然还存在另外一种方法,直接使用jQuery定位到某个元素,然后绑定事件,在事件中定义并使用函数。示例如下:

$("button#btn").click(function(){     alter("我是李明");})
为什么要在#btn前面加上button,就是一个控件类型的标识,如果是div元素,就可以写成div#**。最后关于事件处理方法,这里也要对比一下JavaScript,主要区别在于jQuery比传统的JavaScript的事件句柄属性少了on,也就是在JavaScript的事件是onclick,那么在jQuery中就是click。

          二 接下来介绍,jQuery事件的基础分类,小编认为jQuery的事件分为三类:

               1 页面载入事件$(document).ready()

                  这个事件是最高级别的,只要你写了这个事件,如果页面对应的DOM结构就绪时就可以被调用执行。理解这个事件,需要和我们熟悉的JavaScript的window.onload()事件作对比,那么俩者有什么区别哪?(1)window.onload()事件是页面中所有元素(包括与元素关联的外部资源文件)全部加载到浏览器后才执行,但是jQuery到只要DOM结构加载完,就会调用$(document).ready()事件。(2)window.onload()方法只能一次添加一个事件处理函数,因为onload事件一次只能保存对一个函数的引用,会自动用后面的函数覆盖前面的函数,不能在现有的行为上添加新的行为。但是jQuery就不一样,$(document).ready()方法可以在现有的行为上追加新的行为,事件处理程序函数会根据注册的顺序依次执行。示例如下:

function one(){.....}function two(){.....}window.onload=one;window.onload=two;$(document).ready(function(){one();})$(document).ready(function(){two();})
                  javascript的方法只能执行two方法,但是jQuery的就可以按照顺序,先执行one,再执行two。

                  jQuery的页面加载事件声明方式有三种:1 基本方式:$(document).ready(function(){  //程序代码 }) ;2 简化方式:$(function(){   //程序代码}) ; 3 此外$(document)可以简写成$(),也就是$()不带参数,默认是document,所以第三种方式:$().ready(function(){   //程序代码   })  。

              2 一般的事件的比较多,较长用的包括:单击双击事件、焦点获取失去事件、鼠标移动事件等等。

              3  jQuery合成事件:hover方法、toggle方法。hover方法是mouseenter和mouseleave俩个事件的合成事件,实现方式:$(selector).hover(enter,leave),当光标移到元素上就会触发第一个函数enter,相当于触发mouseenter事件,当光标移出这个元素时,会触发制定到而第二个函数leave,也就是mouseleave事件方法。toggle方法用于绑定俩个或者多个事件处理器函数,将多个函数做参数放到toggle方法里面,第一次触发第一个,第二次触发第一个,依次类推。    

               三 事件的操作,包括绑定、移除、冒泡、模拟。

              1 绑定:(1)bind()方法:可以绑定一些标准事件,例如.click()用于简化.bind('click');基本语法:$(selector).bind(event,data,function),参数分别代表事件节点,传输数据,执行函数。

                            (2)one()方法:为每一个匹配元素的特定事件绑定一个一次性的事件处理函数,特点在于这个事件只执行一次,以后再也不会执行;基本语法:$(selector).one(event,data,function)。

                            (3)live()方法:可以为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数,特点在于本方法能动态添加元素,这样由脚本创建的新元素也一样绑定事件。

              2 移除:unbind()方法:用于移除匹配元素上绑定的一个或者多个事件的事件处理程序,该方法适用于任何通过jQuery附加的事件处理程序。该方法有俩种形式,第一种:移除当前匹配元素的events事件绑定的事件处理函数,语法格式:$(selector).unbind([events[,handler]]);第二种:使用Event对象来取消绑定事件处理程序,语法结构:$(selector).unbind(eventObj)。

              3 事件冒泡:当事件发生后,这个事件就要开始传播,但是这个传播是有方向的,一个事件发生,总会存在一个事件源,事件发生,从当前元素开始向上级传播,直到传播到页面。当然这个事件冒泡是可以被阻止的,共包括俩种方式:(1)通过stopPropagation()方法来停止事件冒泡,(2)在事件处理方法中通过返回false来取消默认的行为,并阻止事件起泡,实现原理:同时调用stopPropagation()和preventDefault()方法,preventDefault在jQuery中可以取消默认的行为。

              4 模拟事件:在jQuery中可以使用trigger()方法来完成模拟操作,也就是功能实现了,但是显示效果没有完全达到。

总结:


               jQuery的一些基础知识,决定我们以后的研究深度,不过学习jQuery的时候,可以和JavaScript进行对比,这样我们的效率会有所提高,同时也会对HTML的工具理解更深入,加油前台路更远,我们要走下去。
1 0