html5中文学习网

您的位置: 首页 > 网站及特效实例 > javascript特效 » 正文

jQuery事件用法实例汇总_jquery_

[ ] 已经帮助:人解决问题

本文以实例形式详细汇总了jQuery中事件的用法,对jQuery的学习有很好的参考价值。分享给大家供大家参考之用。具体用法如下:ygJHTML5中文学习网 - HTML5先行者学习网

1.通过方法名给元素绑定事件:ygJHTML5中文学习网 - HTML5先行者学习网

$('li').click(function(event){})

2.通过bind方法给元素绑定事件:ygJHTML5中文学习网 - HTML5先行者学习网

$('li') .bind('click',function(event){}) .bind('click',function(event){}) 

可见,通过bind,可以给元素绑定多个事件。ygJHTML5中文学习网 - HTML5先行者学习网

3.事件的命名空间ygJHTML5中文学习网 - HTML5先行者学习网

为什么需要事件命名空间?ygJHTML5中文学习网 - HTML5先行者学习网

→假设,先给li元素绑定2个click事件。ygJHTML5中文学习网 - HTML5先行者学习网

$('li') .bind('click',function(event){}) .bind('click',function(event){}) 

→现在我们要把其中一个click事件注销掉,可能这样写:ygJHTML5中文学习网 - HTML5先行者学习网

$('li').unbind('click')

但这样,我们li所有的click事件都注销了,这不是我们想要的。使用事件命名空间可解决这一问题,之所以需要事件命名空间,是因为它为我们在注销事件的时候提供了方便。ygJHTML5中文学习网 - HTML5先行者学习网

如何使用事件命名空间?ygJHTML5中文学习网 - HTML5先行者学习网
→在为元素绑定事件的时候,在事件名称后加上命名空间,符合格式:事件名称.命名空间名称。ygJHTML5中文学习网 - HTML5先行者学习网

$('li') .bind('click.editMode',function(event){}) .bind('click.displayMode',function(event){}) 

→在注销事件的时候,可以这样写:ygJHTML5中文学习网 - HTML5先行者学习网

$('li').unbind('click.editMode')

4.事件的种类ygJHTML5中文学习网 - HTML5先行者学习网

blurygJHTML5中文学习网 - HTML5先行者学习网
changeygJHTML5中文学习网 - HTML5先行者学习网
clickygJHTML5中文学习网 - HTML5先行者学习网
dblclickygJHTML5中文学习网 - HTML5先行者学习网
errorygJHTML5中文学习网 - HTML5先行者学习网
focusygJHTML5中文学习网 - HTML5先行者学习网
focusinygJHTML5中文学习网 - HTML5先行者学习网
focusoutygJHTML5中文学习网 - HTML5先行者学习网
keydownygJHTML5中文学习网 - HTML5先行者学习网
keypressygJHTML5中文学习网 - HTML5先行者学习网
keyupygJHTML5中文学习网 - HTML5先行者学习网
loadygJHTML5中文学习网 - HTML5先行者学习网
mousedownygJHTML5中文学习网 - HTML5先行者学习网
mouseenterygJHTML5中文学习网 - HTML5先行者学习网
mouseleaveygJHTML5中文学习网 - HTML5先行者学习网
mousemoveygJHTML5中文学习网 - HTML5先行者学习网
mouseoutygJHTML5中文学习网 - HTML5先行者学习网
moseoverygJHTML5中文学习网 - HTML5先行者学习网
mouseupygJHTML5中文学习网 - HTML5先行者学习网
readyygJHTML5中文学习网 - HTML5先行者学习网
resizeygJHTML5中文学习网 - HTML5先行者学习网
scrollygJHTML5中文学习网 - HTML5先行者学习网
selectygJHTML5中文学习网 - HTML5先行者学习网
submitygJHTML5中文学习网 - HTML5先行者学习网
unloadygJHTML5中文学习网 - HTML5先行者学习网

5.one方法ygJHTML5中文学习网 - HTML5先行者学习网

用于创建一次性事件,一旦这个事件执行了一次后,就会被自动删除。ygJHTML5中文学习网 - HTML5先行者学习网
ygJHTML5中文学习网 - HTML5先行者学习网

$("p").one("click",function(){ $(this).animate({fontSize: "+=6px"});})

6.删除事件ygJHTML5中文学习网 - HTML5先行者学习网

//先给元素添加事件$("p").click(function(){ $(this).slideToggle();})//再把元素的事件删除$("button").click(function(){ $("p").unbind();})

7.Event属性ygJHTML5中文学习网 - HTML5先行者学习网

实际上,它是jquery的全局属性,jQuery.Event。每当触发事件,Event对象实例就会被传递给Event Handler。ygJHTML5中文学习网 - HTML5先行者学习网

可以通过Event的构造函数来创建事件,并触发事件。ygJHTML5中文学习网 - HTML5先行者学习网

var e = jQueery.Event("click")jQuery("body").trigger(e);

甚至可以通过构造函数,把一个匿名对象放在Event中传递。ygJHTML5中文学习网 - HTML5先行者学习网

var e = jQuery.Event("keydown", {keyCode : 64});jQuery("body").trigger(e);

使用的时候,通过event.data.KeyCode来获取匿名对象的值。ygJHTML5中文学习网 - HTML5先行者学习网

可以通过jQuery.Event的构造函数把匿名对象放在Event中传递,不仅如此,通过事件也可以传递匿名对象。ygJHTML5中文学习网 - HTML5先行者学习网

$("p").click({param1 : "Hello", param2 : "World"}, someFunction);function someFunction(event){ alert(event.data.param1); alert(event.data.param2);}

可见,通过event.data可以获取匿名对象的键。ygJHTML5中文学习网 - HTML5先行者学习网

通过Event对象实例,还可以拿到其它方面的信息,比如:ygJHTML5中文学习网 - HTML5先行者学习网

$("p").click(function(event){ alert(event.target.nodeName);})

以上,通过event.target.nodeName获取触发事件的元素名称。ygJHTML5中文学习网 - HTML5先行者学习网

jQuery.Event的其它属性包括:ygJHTML5中文学习网 - HTML5先行者学习网

altKey 如果alt键按下就为true,在Mac键盘中alt键标记为OptionygJHTML5中文学习网 - HTML5先行者学习网
ctrKey ctrl键被按下ygJHTML5中文学习网 - HTML5先行者学习网
shiftKey Shift键被按下ygJHTML5中文学习网 - HTML5先行者学习网
currentTarget 冒泡阶段的当前元素ygJHTML5中文学习网 - HTML5先行者学习网
dataygJHTML5中文学习网 - HTML5先行者学习网
metaKey 一般Meta键是Ctrl,而Mac上是Command键ygJHTML5中文学习网 - HTML5先行者学习网
pageX 鼠标事件时光标相对于页面原点的水平坐标ygJHTML5中文学习网 - HTML5先行者学习网
pageY 鼠标事件时光标相对于页面原点的垂直坐标ygJHTML5中文学习网 - HTML5先行者学习网
relatedTarget 触发鼠标事件时光标离开或进入的元素ygJHTML5中文学习网 - HTML5先行者学习网
screenX 鼠标事件时光标相对于屏幕原点的水平坐标ygJHTML5中文学习网 - HTML5先行者学习网
screenY 鼠标事件时光标相对于屏幕原点的垂直坐标ygJHTML5中文学习网 - HTML5先行者学习网
result 从前面的事件处理器返回最近非undefined的值ygJHTML5中文学习网 - HTML5先行者学习网
target 触发事件的元素ygJHTML5中文学习网 - HTML5先行者学习网
timestamp jQuery.Event创建实例时的时间戳,以毫秒为单位ygJHTML5中文学习网 - HTML5先行者学习网
type 事件类型,比如clickygJHTML5中文学习网 - HTML5先行者学习网
which 如果是键盘事件,代表按键的数字,如果是鼠标事件,记录按下的是左键、中键或右键ygJHTML5中文学习网 - HTML5先行者学习网

8.Event方法ygJHTML5中文学习网 - HTML5先行者学习网

event.preventDefault()阻止默认行为ygJHTML5中文学习网 - HTML5先行者学习网
event.stopPropgation()停止"冒泡",即停止沿着DOM向上进一步传播ygJHTML5中文学习网 - HTML5先行者学习网
event.stopImmediatePropagation()停止所有事件的进一步传播ygJHTML5中文学习网 - HTML5先行者学习网
event.isDefaultPrevented()ygJHTML5中文学习网 - HTML5先行者学习网
event.isPropgationStopped()ygJHTML5中文学习网 - HTML5先行者学习网
isImmediatePropgagationStopped()ygJHTML5中文学习网 - HTML5先行者学习网

9.live方法和on方法ygJHTML5中文学习网 - HTML5先行者学习网

该方法允许我们为还不存在的元素创建事件。与bind方法不同的是:能为所有匹配的元素绑定事件,设置是那些暂时还不存在、需要动态创建的元素。而且,live方法不一定要放在$(function(){})就绪处理器中。到了 jQuery 1.7以后,就改为on方法了。ygJHTML5中文学习网 - HTML5先行者学习网

$("p").on("click", function(){ alert("hello");})

如果想取消注册事件:ygJHTML5中文学习网 - HTML5先行者学习网

$("button").click(function(){ $("p").off("click");})

10.trigger方法ygJHTML5中文学习网 - HTML5先行者学习网

当我们想手动触发元素绑定的事件时可以使用trigger方法。ygJHTML5中文学习网 - HTML5先行者学习网

$("#foo").on("click",function(){ alert($(this).text());})$("#foo").trigger("click");

还可以在绑定事件的时候出传入形参,在trigger事件的时候传入实参。ygJHTML5中文学习网 - HTML5先行者学习网

$("#foo").on("custom", function(event, param1, param2){ alert(param1 + "/n" + param2)})$("#foo").trigger("custom",["Custom","Event"]);

trigger触发由jQuery.Event创建的实例:ygJHTML5中文学习网 - HTML5先行者学习网

var event = jQuery.Event("logged");event.user = "foo";event.pass = "bar";$("body").trigger(event);

甚至可以在trigger触发方法的时候传入匿名对象:ygJHTML5中文学习网 - HTML5先行者学习网

$("body").trigger({ type: "logged", user: "foo", pass: "bar"});

如果想停止触发事件的传播,可通过jQuery.Event实例的stopPropgation()方法,或在任何事件中返回false。ygJHTML5中文学习网 - HTML5先行者学习网

11.triggerHandler方法ygJHTML5中文学习网 - HTML5先行者学习网

triggerHandler方法与trigger方法的不同之处在于:triggerHandler方法不会执行元素的默认事件,也不会"冒泡"。ygJHTML5中文学习网 - HTML5先行者学习网

//给一个元素绑定一个focus事件$("input").focus(function(){ $("<span>Focused</span>").appendTo("#id").fadeOut(1000);})//用triggerHandler触发$("#id").click(function(){ $("input").triggerHandler("focus");//不会触发focus的默认行为,即进入文本框})//用trigger触发$("#id").click(function(){ $("input").trigger("focus");//同时触发foucs的默认行为和绑定行为})

12.事件冒泡和事件委托ygJHTML5中文学习网 - HTML5先行者学习网

什么是事件冒泡?ygJHTML5中文学习网 - HTML5先行者学习网

有这么一段代码。ygJHTML5中文学习网 - HTML5先行者学习网

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><body> <div>  <p><a href="#foo"><span>I am a Link!</span></a></p>  <p><a href="#bar"><b><i>I am another Link!</i></b></a></p> </div></body></html>

现在,给该页面所有的元素绑定click事件,包括window和document。ygJHTML5中文学习网 - HTML5先行者学习网

  $(function () {   $('*').add([document, window]).on('click', function(event) {    event.preventDefault();    console.log(this);   });  });

当单击页面任何元素,单击事件会从当前元素开始,向上一级元素传播,直到最顶级元素,这里是window。ygJHTML5中文学习网 - HTML5先行者学习网

如何阻止事件冒泡?ygJHTML5中文学习网 - HTML5先行者学习网

显然,通常只希望在某个特定元素发生特定的事件,不希望事件冒泡的发生。这时候我们可以针对某个特定元素绑定事件。ygJHTML5中文学习网 - HTML5先行者学习网

  $(function () {   $('a').on('click', function(event) {    event.preventDefault();    console.log($(this).attr('href'));   });  });

以上,只为a绑定了click事件,无它。ygJHTML5中文学习网 - HTML5先行者学习网

如何有效利用事件冒泡?ygJHTML5中文学习网 - HTML5先行者学习网

在jquery中,事件委托却很好地利用了事件冒泡。ygJHTML5中文学习网 - HTML5先行者学习网

<html><body><div id="container"> <ul id="list">  <li><a href="http://domain1.com">Item #1</a></li>  <li><a href="/local/path/1">Item #2</a></li>  <li><a href="/local/path/2">Item #3</a></li>  <li><a href="http://domain4.com">Item #4</a></li> </ul></div></body></html>

现在,我们想给现有li中的a标签绑定事件,这样写:ygJHTML5中文学习网 - HTML5先行者学习网

$( "#list a" ).on( "click", function( event ) { event.preventDefault(); console.log( $( this ).text() );});

但是,如果又在现有的ul中添加新的li和a,那情况又如何呢?ygJHTML5中文学习网 - HTML5先行者学习网

$( "#list" ).append( "<li><a href='http://newdomain.com'>Item #5</a></li>" );

结果,点击新添加的li中的a,什么都没有发生。那么,如何为动态添加的元素绑定事件呢?ygJHTML5中文学习网 - HTML5先行者学习网

如果我们能把事件绑定到a的父级元素,那在父级元素内生成的子级动态元素,也会有绑定事件的行为。ygJHTML5中文学习网 - HTML5先行者学习网

$( "#list" ).on( "click", "a", function( event ) { event.preventDefault(); console.log( $( this ).text() );});

以上,我们把click事件绑定到a的父级元素id为list的ul上,on方法中的第二个参数,这里是a,是事件真正的执行者。具体过程如下:ygJHTML5中文学习网 - HTML5先行者学习网
→点击某个a标签ygJHTML5中文学习网 - HTML5先行者学习网
→根据事件冒泡,触发了a的父级元素ul的click事件ygJHTML5中文学习网 - HTML5先行者学习网
→而事件真正的执行者是aygJHTML5中文学习网 - HTML5先行者学习网

事件委托允许我们把事件绑定到父级元素,这相当于给所有的子级元素绑定了事件,不管这个子级元素是静态的、还是动态添加的。ygJHTML5中文学习网 - HTML5先行者学习网

13.toggle方法ygJHTML5中文学习网 - HTML5先行者学习网

允许我们依次执行多个事件,当执行完最后一个事件后,再执行第一个事件。ygJHTML5中文学习网 - HTML5先行者学习网

$('img[src*=small]').toggle({ function(){}, function(){}, function(){}});

14.mouseenter和mouseleave方法ygJHTML5中文学习网 - HTML5先行者学习网

$(element).mouseenter(function(){}).mouseleave(function(){})

15.hover方法ygJHTML5中文学习网 - HTML5先行者学习网

$("p").hover(function(){ $("p").css("background-color","yellow"); },function(){ $("p").css("background-color","pink");});

相信本文所述对大家的jQuery程序设计有一定的借鉴价值。ygJHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助