jquery系列教程4-事件操作全解

来源:互联网 发布:ubuntu emacs 编辑:程序博客网 时间:2024/06/06 09:05

点击打开:
jquery系列教程1-选择器全解
jquery系列教程2-style样式操作全解
jquery系列教程3-DOM操作全解
jquery系列教程4-事件操作全解
jquery系列教程5-动画操作全解
jquery系列教程6-ajax的应用全解
jquery系列教程7-自定义jquery插件全解
jquery系列教程8-jquery插件大全

jquery中的事件操作全解:

这里写图片描述
事件冒泡,子元素事件会向父元素传递,触发父元素的同类事件
事件捕获,事件从最外层开始向内层传递,jquery不支持捕获,只能使用原生js才能使用事件捕获

DOM加载事件

DOM加载事件分为onload事件和ready事件。

//window.onload函数在页面所有内容加载完成后触发,只能执行最后一个window.onload函数$(window).load(function(){         //等价于window.onload = function    alert("加载完成");});//ready函数在DOM树加载完成后触发,可以同时执行多个ready函数。$(document).ready(function(){      //$(document)可以简写成$(),  $(document).ready函数可以简写成$(function(){})    alert("加载完成");});

事件绑定

使用函数bind(type [,data],fn)绑定事件。

1、其中type表示事件类型:blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseout,mouseover,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error。

2、data表示传递给事件对象的额外数据,范围绑定的处理函数

$cr.bind("click",myfun = function(){                   //bind绑定事件,可以没有额外数据。可以将事件赋值给一个引用变量,在其他地方使用这个函数    this.innerHTML;                                    //this表示绑定对象    $(this).html();                                    //将this通过$转化为jquery对象,以便调用jquery函数});$cr.bind("click.mynamespace",function(){               //mynamespace用于表示事件的命名空间,是一个用于区别相同类型事件的不同函数.});$cr.bind("mouseover",function(event){                   //bind更换绑定事件,event事件对象,调用不用传递传参数,会自动拥有此参数。    event.preventDefault();                             //阻止默认行为,如超链接自动跳转,提交按钮自动提交。    event.stopPropagation();                            //停止事件冒泡。因为事件大部分默认是冒泡的    return false;                                       //return false也代表了preventDefault和stopPropagation,可以代替他们}).bind("mouseout",function(event){                     //对于没有返回值的对象函数,函数后可以继续进行访问,jquery特色的链式操作。    event.type;                                         //事件类型    event.target;                                       //触发事件的元素,此处相当远鼠标离开的元素    event.relatedTarget;                                //相关元素,此处相当于鼠标进入的元素    event.pageX+event.pageY;                            //光标相对于页面的位置,如果有滚动条要加上滚动条的位置    event.which;                                        //鼠标按键(1,2,3,表示左右中键)或键盘按键    event.metaKey;                                      //ctrl按键});$cr.bind("mouseover mouseout",function(){               //可以一次绑定多个事件    alert("光标进出");});$cr.bind("myclick",function(event,message1,message2){   //为对象绑定自定义事件,不会自动触发,必须代码触发。    alert(message1.toString()+message2.toString());});$cr.one("click",function(){                              //对只执行一次,就解除绑定的事件,使用one绑定});

解除绑定

$cr.unbind();                                       //删除元素所有事件$cr.unbind("click");                                //删除元素所有点击事件,因为元素可以同时绑定多个点击事件$cr.unbind("mouseover").unbind("mouseout");         //解除绑定,支持链式写法$cr.unbind("click",myfun);                          //删除元素myfun点击事件$cr.unbind(".mynamespace");                         //删除所有具有此命名空间的绑定函数

合成事件

jquery特有的hover和toggle方法。

$cr.hover(function(){                         //hover用来模拟光标悬停事件,同时设置光标进入和离开函数,与上面同时设置mouseovermouseout函数效果相同    printf("光标进入");},function(){    printf("光标离开");});$cr.toggle(function(){                         //toggle模拟鼠标连续点击    printf("第一次点击");},function(){    printf("第二次点击");},function(){    printf("第三次点击");});

模拟操作

$cr.trigger("click");                             //触发事件,包括绑定事件和默认事件$cr.trigger("click!");                            //触发没有命名空间的事件$cr.trigger("myclick",['我的自定义','事件']);       //触发自定义事件,以数组的形式传递参数$cr.click();                                      //触发事件,包括绑定事件和默认事件$cr.triggerHandler("focus");                      //触发绑定事件,但不触发默认事件
原创粉丝点击