讲 事件冒泡 、阻止冒泡 和 事件捕获 之前先说说什么是事件流,这样会更容易明白 一、事件和事件流 1、什么是事件 事件是可以被 JavaScript 侦测到的行为。...一个完整的JS事件流是从window开始,最后回到window的一个过程。 事件流被分为三个阶段(1~ 5)捕获过程、(5~ 6)事件触发过程、(6~ 10)冒泡过程。...三、阻止冒泡 1、JS阻止事件冒泡 我们用 e.stopPropagation() 这个方法添加到某事件函数里的末尾,就可以做到阻止冒泡事件。...2、JQ阻止事件冒泡 jq阻止事件冒泡就简单了,直接在事件函数里面添加 return false; 就行了。...布尔值,指定事件是否在捕获或冒泡阶段执行。 可能值: true - 事件句柄在捕获阶段执行 false - 默认。
问题来自群里的一位骚年@い♂壹惢; 他的问题是:a下有一个checkbox a上绑定着两个事件:看代码; 想要点击a的同时阻止tan()和href:javascript的执行; a{color:#08e;} function stopEvent(ev) { ev.stopPropagation(); alert("阻止了...document.getElementById("c1"); elem.addEventListener("click", stopEvent, false); } function tan(){ alert("如果你能看到我,说明我没有被阻止...click 不过使用stopPropagation只能阻止...onclick的tan()方法;不能阻止href:javascript的alert()方法; 目前还没有找到解决方案;哪位仁兄如果找到了可以@627911903;或者给我发邮件也行 点击邮我
先上结论: 他们是描述事件触发时序问题的术语。事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡是自下而上的去触发事件。...绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。...Jquery的e.stopPropagation会阻止冒泡,意思就是到我为止,我的爹和祖宗的事件就不要触发了。...事件的触发顺序自内向外,这就是事件冒泡。...事件触发顺序变更为自外向内,这就是事件捕获。 方法: 阻止事件冒泡 和默认行为。 事件冒泡: ? 阻止默认行为: ?
事件冒泡及阻止 当一个元素接收到事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表现...DOCTYPE html> JS事件冒泡及阻止 div{...DOCTYPE html> JS事件冒泡及阻止 li{...有时候我们并不希望事件冒泡而去执行上级节点绑定的事件,这时候就需要阻止事件的冒泡,w3c的方法是e.stopPropagation(),IE则是使用 window.event.cancelBubble...注意 不是所有的事件都能冒泡。以下事件不冒泡:blur、focus、load、unload。 事件解决方案方式在不同浏览器,可能是有所区别的,有些不支持捕获型方案,多数浏览器默认冒泡型方案。
结论 element.addEventListener(event, function[, useCapture]) event:事件名称,如click function:指定要事件触发时执行的函数,可以传入事件参数...布尔值,指定事件是否在捕获或冒泡阶段执行。...默认false:在冒泡阶段执行指定事件 true:在捕获阶段执行事件 event.stopPropagation():阻止事件传播,用于function(event){}中 图解捕获与冒泡 实例:aa...,再按aa>bb>cc依次冒泡;因为第三个参数(useCapture)默认为false,所以在冒泡阶段执行各自click函数,结果如下: cc bb aa 当js修改为 function print...当js修改为 function print(e){ e.stopPropagation();//执行完此函数后,该事件不再继续传播 console.log(this.id);
事件冒泡: 事件冒泡由IE团队提出来的,即事件开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。...addEventListener('click', function () { alert('obj3'); })//依次弹出obj3、world、hello 阻止事件冒泡的方法...: 方式一:event.stopPropagation(); 方式二:return false; return false 不仅阻止了事件往上冒泡,而且阻止了事件本身。...event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。...事件捕获: 事件捕获是由Netscape Communicator团队提出来的,是先由最上一级的节点先接收事件,然后向下传播到具体的节点。
——陀思妥耶夫斯基《罪与罚》 今天遇到一个问题,我想阻止浏览器默认的滚动事件,却阻止不了还一直报错 <!
冒泡事件和捕获事件 冒泡事件是,进行 捕获事件是从外向内,从大到小 冒泡事件bindtap one <view...测试 点击 区域,事件会从内到外从小到大Console`控制台显示 捕获事件capture-bind:tap <view id="one" class="one" capture-bind:tap="_...测试 点击 three区域,<em>事件</em>会从外到到,从大到小进行传递,Console`控制台显示 非冒泡<em>事件</em>和<em>捕获</em><em>阻止</em><em>事件</em> 非冒泡<em>事件</em>catchtap <view id="one" class="one" bindtap...测试 点击 three区域,事件从内到外传递被阻止,Console控制台显示 捕获阻止事件capture-catch:tap <view id="one" class="one" capture-catch...测试 点击 three区域,事件从外到内传递被阻止,Console控制台显示 互斥事件(mut-bind:tap) one
事件机制 ---- 事件触发三个阶段: window往事件触发处传播,遇到注册的捕获事件会触发 传播到事件触发处时触发注册的事件 从事件触发处往window传播,遇到注册的冒泡事件会触发 事件触发一般会按照...event model |------------------------------------------- 但是有一个特例:如果给body中的子节点同时注册冒泡和捕获事件...'}, true) 当点击innner元素时,如下元素发生了: 点击事件开始于捕获阶段,在此阶段浏览器会在所有祖先元素上查找点击事件处理函数(从document开始) 结果找到了2个,分别在document...和outer上面,而且这两个事件处理函数的useCapture选项为true,说明他们被注册在捕获阶段的。...于是,document和outer的点击处理函数被执行 继续向下寻找,直到到达inner元素本身,捕获阶段就此结束。
'block'; var oEvent = ev || event; oEvent.cancelBubble = true; // 取消事件冒泡
说到js事件大家肯定都知道,那么今天讲一点大家不知道的(假设大家不知道?)。 所有的js事件都会分为两个阶段捕获和冒泡。...true表示监听事件的捕获阶段,false表示监听事件的冒泡阶段。 返回值 没有返回值 示例: <!...其次是inner捕获阶段 然后是inner冒泡阶段 最后是outer冒泡阶段 由此我们可以看到,事件触发的时候实际上都是有捕获和冒泡阶段的,并且捕获阶段会从最外层的父级元素开始捕获,一直捕获到最后触发事件的那个元素点才会停止...并且事件的触发是先捕获,在冒泡。 阻止事件冒泡 事件的冒泡会让我们实现某些功能的时候产生阻碍,那么我们怎么怎么阻止事件的冒泡呢,这个时候就会用到一个方法。...这样就成功的阻止了事件的冒泡,是不是很神奇,那么我们阻止事件冒泡还有别的方法吗,答案是肯定的,这时候就得了解一下我们的event对象了,我们打印一下event对象,如下: 打印发现当我们触发事件时,
当父子元素中都有点击事件的时候,为了让触发子元素中的事件时,不去触发父元素中的事件,可以在子元素事件中添加stop来阻止事件冒泡。....stop 是阻止冒泡行为,不让当前元素的事件继续往外触发,如阻止点击div内部事件,触发div事件 .prevent 是阻止事件本身行为,如阻止超链接的点击跳转,form表单的点击提交 .self 是只有是自己触发的自己才会执行...,如果接受到内部的冒泡事件传递信号触发,会忽略掉这个信号 .capture 是改变js默认的事件机制,默认是冒泡,capture功能是将冒泡改为倾听模式 .once 是将事件设置为只执行一次,如 .click.prevent.once...代表只阻止事件的默认行为一次,当第二次触发的时候事件本身的行为会执行 .passive 滚动事件的默认行为 (即滚动行为) 将会立即触发,而不会等待 onScroll 完成。...阻止click事件冒泡(防止触发另一个事件)的方法 使用vue阻止子级元素的click事件冒泡。
事件与事件流 事件,是文档或浏览器窗口发生的一些特定的交互事件。事件流,描述的是页面中接收事件的顺序。 默认情况下,事件使用冒泡事件流,不使用捕获事件流。...捕获与冒泡 事件捕获:执行顺序(document->html->body->div) 事件冒泡:执行顺序(div->body->html->document) IE < 9:只支持事件冒泡...IE 9+|chrome|firefox|safari:事件冒泡+事件捕获 阻止捕获与冒泡 event.stopPropagation() 示例代码 <!...'); // 阻止事件捕获,内层不会再捕获到事件 // event.stopPropagation(); }, true); middle.addEventListener...('click', function (event) { console.log('middle-->事件冒泡'); // 阻止事件冒泡,外层不会再捕获到事件
js中事件捕获的实现 1、当鼠标点击或触发dom事件,触发dom事件的元素称为事件源。 2、浏览器会从根节点=>事件源(从外到内)传播事件。...3、不太具体的节点应该更早接收到事件,最具体的节点应该最后接收到事件。...s2">s2 s1.addEventListener("click",function(e){ console.log("s1 冒泡事件...false); 以上就是js中事件捕获的实现,希望对大家有所帮助。...更多js学习指路:js教程 推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。
在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。...停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) //因此它支持W3C的stopPropagation(...)方法 e.stopPropagation(); else //否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; return false...; 阻止浏览器的默认行为 JavaScript代码 //编辑文章时阻止a标签跳转 $("#final_content").find("a").click...(function(e){ //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.preventDefault
下面我将使用 Ant Design Vue 框架实现一个示例,来展示如何在 Vue.js 中阻止子组件的点击事件。问题描述在表单业务中,有一个封装的子组件(包含 input 和 modal)。...为了保证每次弹窗查询的列表是有值的,我要做的是,当外部表单的两个选择框为空时,阻止子组件的点击事件,并给用户弹出错误提示。当两个选择框都有值的情况下,子组件可以正常点击操作,触发弹窗。...方案二:在子组件外部覆盖一层透明遮罩在父组件中,通过动态显示透明遮罩来阻止点击事件。...总结在 Vue.js 中阻止子组件的点击事件有多种方式可供选择。通过在子组件中添加 prop 进行条件判断,可以明确传递状态控制子组件行为,但需要修改子组件代码,增加了耦合度。...在实际开发中,我们可以根据具体需求选择合适的方法来实现子组件的点击事件控制。希望这篇文章能为你在 Vue.js 开发中遇到类似问题时提供一些思路和帮助。
div> //这里可以导入其他文件(比如:组件,工具js...,第三方插件js,json文件,图片文件等等) //例如:import 《组件名称》 from '《组件路径》'; export default { //import引入的组件需要注入到对象中才能使用
Vue 阻止事件冒泡 by:授客 QQ:1033553122 开发环境 Win 10 element-ui "2.8.2" Vue 2.9.6 事件冒泡简介 如下图,当我们点击页面某个元素时,会产生点击事件...,事件由外到内,逐层递进(事件捕获阶段,途中的1->2->3->4),当目标元素捕捉到目标事件时,会响应事件,并由内到外,逐层往外传递(事件冒泡阶段,图中的4->5->6->7),这便是事件冒泡。...结论 综合实验1,2,3可知,如果想阻止哪个元素的事件冒泡(即事件只针对该元素有效),只要给该元素的事件增加.stop修饰符即可。...常见的屏蔽右键默认菜单 .passive 每次事件产生,浏览器都会去查询一下是否调用了preventDefault阻止该次事件的默认动作,为事件设置.passive修饰符就是为了告诉浏览器,不用查询了,....capture 表示在“事件捕获阶段”监听事件,即在事件捕获阶段回调事件处理函数。
在uniapp项目中,经常会遇到父元素有一个点击事件,其子元素也有一个点击事件,但我们只想触发子元素事件,可是父元素也跟着触发了。...我们这时需要给子元素加上阻止事件冒泡就行了 //子元素方法 ...@click.stop 就是阻止事件冒泡的写法 未经允许不得转载:肥猫博客 » uniapp阻止事件冒泡
javascript 的事件捕获和事件冒泡之前一直没能弄明白,知道看到一个例子。...利用丢一颗石头入水的例子,就能够非常形象了,如图所示: 事件捕获和事件冒泡就像是一颗石头(点击事件)投入水中: 首先是最外层水面(html)接触(捕获)石头,然后石头下沉,内层的水(body/dom...点击可查看示例 去示例中试一试便清楚了~ 处理事件 理解了事件的捕获和冒泡机制,对于事件处理就好办了。...监听事件 /** * @param { event } 事件 * @param { functionEvent } 事件处理函数 * @param { capture } 是否在捕获阶段触发事件...阻止默认事件 event.preventDefault() // 阻止事件默认动作,比如阻止 submit 按钮默认提交 event.stopPropagation() // 阻止捕获 和 冒泡阶段中事件的进一步传播
领取专属 10元无门槛券
手把手带您无忧上云