- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
js中preventDefault和stopPropagation
首先讲解一下js中preventDefault和stopPropagation两个方法的区别:
???? preventDefault方法的起什么作用呢?我们知道比如a href= HYPERLINK / 百度/a,这是html中最基础的东西,起的作用就是点击百度链接到 HYPERLINK / ,这是属于a标签的默认行为,而preventDefault方法就是可以阻止它的默认行为的发生而发生其他的事情。看一段代码大家就明白了:
???? !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN HYPERLINK /TR/xhtml1/DTD/xhtml1-transitional.dtd /TR/xhtml1/DTD/xhtml1-transitional.dtdhtml xmlns= HYPERLINK /1999/xhtml /1999/xhtmlheadmeta http-equiv=Content-Type content=text/html; charset=utf-8 /titleJS阻止链接跳转/titlescript type=text/javascript function stopDefault( e ) { ???? if ( e e.preventDefault ) ??????? e.preventDefault(); ??? else ??????? window.event.returnValue = false; ??????? ??? return false; } /script /headbodya href= HYPERLINK / id=testLink百度/a script type=text/javascript var test = document.getElementById(testLink); test.onclick = function(e) { ?? alert(我的链接地址是: + this.href + , 但是我不会跳转。); ?? stopDefault(e); } /script/body/html
此时点击百度链接,不会打开 HYPERLINK / ,而只是弹出一个alert对话框。
???? preventDefault方法讲解到这里,stopPropagation方法呢?讲stopPropagation方法之前必需先给大家讲解一下js的事件代理。
????? 事件代理用到了两个在JavaSciprt事件中常被忽略的特性:事件冒泡以及目标元素。当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。对任何一个事件来说,其目标元素都是原始元素,在我们的这个例子中也就是按钮。目标元素它在我们的事件对象中以属性的形式出现。使用事件代理的话我们可以把事件处理器添加到一个元素上,等待事件从它的子级元素里冒泡上来,并且可以很方便地判断出这个事件是从哪个元素开始的。
???? stopPropagation方法就是起到阻止js事件冒泡的作用,看一段代码。
???? !DOCTYPE HTML PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN HYPERLINK /TR/xHTML1/DTD/xHTML1-transitional.dtd /TR/xHTML1/DTD/xHTML1-transitional.dtdHTML XMLns= HYPERLINK /1999/xHTML /1999/xHTML lang=gb2312headtitle 阻止JS事件冒泡传递(cancelBubble 、stopPropagation)/titlemeta name=keywords content=JS,事件冒泡,cancelBubble,stopPropagation /scriptfunction doSomething (obj,evt) {alert(obj.id);var e=(evt)?evt:window.event;if (window.event) {?? e.cancelBubble=true;???? // ie下阻止冒泡} else {?? //e.preventDefault();?? e.stopPropagation();???? // 其它浏览器下阻止冒泡}}/script/headbodydiv id=parent1
文档评论(0)