jquery 事件机制

2010年12月19日jquery事件机制【转】在介绍方法之前,我觉得有必要描述一下响应事件的两种策略,一种是事件捕获(Eventcapturing),一种是事件冒泡(Eventbubble),这两种策略是相对立的,它们是在浏览器大战中分别由Netscape和微软提出的完全相反的两种事件传播模型。事件冒泡定义为在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层。而事件捕获则与事件冒泡则恰好相反,处理事件是从对象的最外层往里传播,直到终止。W3C标注是支持两种事件处理策略的,但是却更偏向于事件冒泡,因为事件捕获Bug较多,目前IE是不支持事件捕获的,其他浏览器基本两种都支持。下面我给一个事件冒泡的例子,自己试一下就明白了,至于事件捕获就算了.....事件冒泡<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""www3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="www3.org/1999/xhtml"><head><meta-equiv="Content-Type"content="text/html;charset=utf-8"/><title>JavaScript事件冒泡</title><styletype="text/css">#box{width:200px;height:100px;border:2pxsolidred}#boxh5{margin:0;padding:2px5px;font-size:18px;text-align:right;background:red;cursor:move}#boxh5a{text-decoration:none;color:#FFF}#boxdiv{white-space:inherit;}</style></head><body><divid="box"><h5onmousedown="startDrag();"><aonmousedown="closeBox();"href="javascript:void(0);">关闭</a></h5><divid="testInfo"></div></div><scripttype="text/javascript">functionstartDrag(){document.getElementById('testInfo').innerHTML+='层事件';}functioncloseBox(e){document.getElementById('testInfo').innerHTML+='关闭事件';//将下面一段注释去掉则可以阻止冒泡//if(ee.stopPropagation)//e.stopPropagation();//else//windoevent.cancelBubble=true;}</script></body></html>那么在JQuery中阻止事件策略的方法有event.preventDefault();(阻止默认行为)、event.stopPropagation();event.stopImmediatePropagation();(阻止事件冒泡)、直接返回returnfalse;(阻止默认行为和时间冒泡)。事件处理包括bind(type,[data],fn)、bind(map)、one(type,[data],fn)、trigger(type,[data])、triggerHandler(type,[data])、unbind([type],[data])这几个方法。1、bind(type,[data],fn)用于为指定元素绑定指定的事件处理函数,[data]代表可选的传递的参数,它的写法为:代码//带参数的绑定方式$("#text").bind('click',{result:"yes"},function(event){alert(event.data.result);})//不带参数并且阻止冒泡$("#text").bind('click',function(e){//自定义处理行为e.stopPropagation();})其实bind(type,[data],fn)这种绑定事件的方式我们还有一种简写的方式,但是他们的区别在于简写方式不能如bind一样指定参数[data],他的写法就是直接将bind中type参数执行,如下:$("#text").click(function(e){//自定义处理行为alert("简写方式");})2、bind(map)就是一次性为元素绑定多个事件处理函数,写法如下:代码$('#text').bind({click:function(){alert("bind(map)绑定的click事件");},mouseenter:function(){alert("bind(map)绑定的mouseenter事件");}});3、one(type,[data],fn)指定事件只执行一次,写法与bind()方法一样,在此就不做示范。4、trigger(type,[data])、triggerHandler(type,[data])其实作用是一样的,都是在每一个匹配的元素上触发某类事件,唯一的区别就是前者是执行事件冒泡事件的,而后者只执行指定元素的事件。下面做个比较:代码//HTML代码:<buttonid="trigger">trigger()</button><buttonid="triggerHandler">triggerHandler()</button><br/><br/><divid="triggerdiv"><divid="tri"></div></div>//JQuery代码$("#triggerdiv").click(f...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?