EonerCMS——做一个仿桌面系统的CMS(六)
事件冒泡
事件冒泡是个很常见的问题,不过我之前没听说过,所以这里只是做个笔记,如果了解事件冒泡,并清楚如何处理的,可以直接跳过这篇文章。下面我们看下这面这demo,点击红色区域,会弹出1,点击灰色,会弹出2。
alert(2);
alert(1);$( "#div1" ).click( function (){ alert(1); }); $( "#div2" ).click( function (){ alert(2); }); |
处理办法其实很简单,有两种,一种就是“e.stopPropagation();”,另外一种就是“return false;”。
alert(2);
alert(1);$( "#div1" ).click( function (){ alert(1); }); $( "#div2" ).click( function (e){ e.stopPropagation(); alert(2); }); |
或者:
$( "#div1" ).click( function (){ alert(1); }); $( "#div2" ).click( function (e){ alert(2); return false ; }); |
两种解决办法的区别就是,return false必须放在方法最后,不然之后的代码也就不执行了,也就是说,当你把return false放在最头部的时候,不仅阻止了事件往上冒泡,而且阻止了事件本身。
关于在EonerCMS里哪里会用到阻止冒泡呢,看下这张图吧
由于title区域的拖动事件执行顺序是mousedown->mousemove,所以在title区域里的最大化、最小化等按钮,他们的事件虽然是click,但click默认也执行了mousedown,所以这里需要先统一阻止冒泡。
//组织冒泡,之前对窗口绑定过事件 obj.find( "a" ).bind( "mousedown" , function (e){ e.stopPropagation(); }); |
新博客地址
hooray.github.io
hooray.github.io
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架