[转载 js] YUI解决mouseout事件冒泡的办法

news/2024/5/11 16:12:59/文章来源:https://blog.csdn.net/weixin_30652491/article/details/95275385

原文出处:http://design.alibaba-inc.com/?q=node/727

========================================

YAHOO.util.Dom.isAncestor —— 给元素寻根问祖
  • 查看
  • 跟踪
小马 的头像周三, 02/13/2008 - 13:47 — 小马

语法:

YAHOO.util.Dom.isAncestor(haystack, needle)
YAHOO.util.Dom.inDocument(el)

YUI的源码里使用 haystack(草堆) 和 needle(针) 作为参数名,体现了YUI开发人员的幽默感。look for a needle in a haystack 正是大海捞针的意思。

isAncestor() 方法用来判断 haystack 元素是否是 needle 元素的父节点。它在鼠标参与的一些交互中非常有用。

我们都知道 mouseover 和 mouseout 事件,它们不方便之处在于,当鼠标在容器上滑动时,可能多次触发 mouseover 和 mouseout 事件,这增加了我们编码的复杂度。

IE支持mouseenter 和 mouseleave 事件,它们只在鼠标移到或移出容器时才触发。但其他浏览器并不支持这两个事件。但是,使用 inAncestor() 方法可以帮助我们模拟实现。看下面的例子:

//HTML 结构<div id="demo-container"> <ul id="demo-ul"> <li id="child_1"><span><span><b><b>child 1</b></b></span></span></li> <li id="child_2"><span><span><b><b>child 2</b></b></span></span></li> <li id="child_3"><span><span><b><b>child 3</b></b></span></span></li> </ul></div><div id="msg"></div>//JS$E.onDOMReady(function() { var container = $('demo-container'); var msgbox = $('msg'); //模拟 mouseenter 事件 var mouseEnterHandler = function(ev) { //relatedTarget 在mouseover事件中指向鼠标从该处移过来的元素 var rt = $E.getRelatedTarget(ev); //如果rt 不是container本身,同时也不是container的子元素,那么就是 Enter 的情况 if (rt !== container && !$D.isAncestor(container, rt)) { msgbox.innerHTML += 'Entering ...'; } msgbox.innerHTML += 'Mouse Over ...'; } //模拟 mouseleave 事件 var mouseLeaveHandler = function(ev) { msgbox.innerHTML += 'Mouse Out ...'; //relatedTarget 在mouseout事件中指向鼠标移动到的元素 var rt = $E.getRelatedTarget(ev); //如果rt 不是container本身,同时也不是container的子元素,那么就是 Leave 的情况 if (rt !== container && !$D.isAncestor(container, rt)) { msgbox.innerHTML += 'Leaving ...'; } } $E.on(container, 'mouseover', mouseEnterHandler); $E.on(container, 'mouseout', mouseLeaveHandler);});

打开范例文件。

TBra 中的TB.widget.SimplePopup 组件正是采用了上例中的实现。

isAncestor() 方法还衍生 inDocument() 方法,该方法用来判断一个元素是否存在于DOM树中,其实它就是简单的调用 isAncestor() 方法,看它的源码:

/** * Determines whether an HTMLElement is present in the current document. * @method inDocument * @param {String | HTMLElement} el The element to search for * @return {Boolean} Whether or not the element is present in the current document */inDocument: function(el) { return this.isAncestor(document.documentElement, el);},

转载于:https://www.cnblogs.com/cly84920/archive/2009/03/20/4427027.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_700973.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看服务器有多少网站--免费工具

一台虚拟主机上到底有多少个网站或者说同一ip下有多少个域名和网站&#xff1f;这是站长们都很关心的&#xff0c;因为这样可以知道你的站到底和谁是邻居&#xff0c;有时候如果你和百度黑名单上的垃圾站在同一空间下&#xff0c;你也会受到牵连。 那么怎 ...中间左侧广告 一台…

asp.net获取网站路径

网站在服务器磁盘上的物理路径: HttpRuntime.AppDomainAppPath 虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath 任何于Request/HttpContext.Current等相关的方法, 都只能在有请求上下文或者页面时使用. 即在无请求上下文时,HttpContext.Current为null. 而上面提到的方法一…

知名网站的 404 页面长啥样?

来自&#xff1a;程序猿&#xff08;微信号&#xff1a;imkuqin&#xff09;每天浏览各大网站&#xff0c;难免会碰到404页面啊。你注意过404页面么&#xff1f;猿妹搜罗来了下面这些知名网站的404页面&#xff0c;以供大家欣赏&#xff0c;看看哪个网站更有创意&#xff1a;腾…

开源Jekyll助您构建你的网站

Jekyll 是一个开源的静态网站生成器。你可以使用 Markdown 编写内容&#xff0c;使用 HTML/CSS 来构建和展示&#xff0c;Jekyll 会将其编译为静态的 HTML。Jekyll 是一个开源的静态网站生成器。你可以使用 Markdown 编写内容&#xff0c;使用 HTML/CSS 来构建和展示&#xff0…

用WWWGrep来检查你的网站元素安全

WWWGrep是一款针对HTML安全的工具&#xff0c;该工具基于快速搜索“grepping”机制实现其功能&#xff0c;并且可以按照类型检查HTML元素&#xff0c;并允许执行单个、多个或递归搜索。 关于WWWGrep WWWGrep是一款针对HTML安全的工具&#xff0c;该工具基于快速搜索“grepping…

免费下载高质量素材资源的28个网站推荐

Web设计人员经常会去网上搜罗各种各样的素材&#xff0c;这些免费素材不仅能帮助他们节省大量的时间&#xff0c;还能有很好的效果。如今&#xff0c;网络上有很多很多有才华的设计师分享它们的劳动成果&#xff0c;让更多的人可以使用他们的创意设计&#xff0c;谢谢他们。今天…

网站性能优化的常用方法

网站性能的优化是一件大事。它涉及多个方面需要照顾&#xff0c;其中许多取决于网站本身、其复杂性和元素。但是&#xff0c;还有一些适用于任何站点的常用优化方法。集成 CDN 内容交付网络(又名 CDN)是一个非常棒的工具&#xff0c;可以集成到你的网站中&#xff0c;因为它可…

刷了几千道算法题,我私藏的刷题网站都在这里了

作者 | Rocky0429 来源 | Python空间&#xff08;ID: Devtogether&#xff09;遥想当年&#xff0c;机缘巧合入了 ACM 的坑&#xff0c;周边巨擘林立&#xff0c;从此过上了"天天被虐似死狗"的生活...然而我是谁&#xff0c;我可是死狗中的战斗鸡&#xff0c;智力不够…

深度学习会议论文不好找?这个ConfTube网站全都有

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅 出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

不到顶会现场也能听论文讲解?这个视频集合网站值得收藏

BDTC大会官网&#xff1a;https://t.csdnimg.cn/q4TY作者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai1000&#xff09;最近跟身边的硕士生、博士生聊天&#xff0c;发现有一个共同话题&#xff0c;大家都想要知道哪款产品能防止掉头发&#xff1f;养发育发已经成了茶余饭…

Nginx搭建静态网站

2019独角兽企业重金招聘Python工程师标准>>> 搭建Http静态服务器环境 搭建静态网站&#xff0c;首先需要部署环境。下面的步骤&#xff0c;将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务。 安装 Nginx 在 CentOS 上&#xff0c;可直接使用 yum 来安装 Ngi…

aes离线解密工具_CTF常用工具、网站、练习平台

常用工具网站CTFtools 比较全的工具下载网站&#xff0c;提供百度云链接BUUCTF 比较全的工具下载网站&#xff0c;提供百度云链接XSS 之旅 xss 攻击练习网站&#xff0c;闯关式设计&#xff0c;难度递增tooleyes 在线工具库&#xff0c;一些编码和算法之类的都有千千秀字常用密…

真爱!微软宣布新开源网站,由 Jekyll 一键生成,代码所见即所得

来源 | Microsoft编辑 | 小匀转自 | 新智元近日&#xff0c;微软上线了一个新的开源网站。这不是微软唯一的开源网站&#xff0c;但却代表了新的起点。网友表示&#xff1a;这次真的拥抱开源了&#xff01;从「恨」到「爱」&#xff0c;微软与开源有着一段长达30年的故事。微软…

怎样监测微型的网站服务

最终我意识到&#xff0c;我所要写的任何服务器的风险都很低&#xff0c;如果它们偶尔宕机 2 小时也没什么大不了的&#xff0c;我只需设置一些非常简单的监控来帮助它们保持运行。 你好! 我最近又开始运行一些服务器&#xff08;​​nginx playground​​​、​​mess with dn…

关于mouseenter、mouseover、mouseout、mouseleave的理解

先说结论&#xff1a;enter、leave是元素区域上的进入和离开&#xff0c;over、out是逻辑上的进入和离开。 enter和leave只在离开元素区域时触发&#xff0c;比如下面这个子元素在父元素的区域中&#xff0c;那么进入、离开子元素是不会触发的&#xff0c;因为子元素在父元素的…

php网站首页点击更多时获取数据,jQuery+PHP实现点击按钮加载更多,不刷新页面加载更多数据!附:可用源码+demo...

先上效果&#xff1a;刚打开页面的时候&#xff0c;只显示部分数据&#xff0c;点击加载更多的时候&#xff0c;就会加载我们预先定义的加载数量显示出来&#xff01;当数据库里面的所有数据都显示出来&#xff0c;就提示全部加载了&#xff01;新建index.phpjQueryphp实现点击…

整理一周的Python资料,包含各阶段所需网站、项目,2020燥起来!

回复“pythonpdf“&#xff0c;立刻领取100本全品类Python电子书不知怎么的&#xff0c;最近不少关注我的读者都开始私信我怎么学好python&#xff1f;零基础转行是不是合适&#xff0c;还有希望吗&#xff1f;今年30了&#xff0c;还能不能转IT&#xff1f;其实关于零基础转型…

深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...

机器之心报道作者&#xff1a;魔王、杜伟想不想在动画电影中拥有自己的角色&#xff1f;这个网站一键满足你的需求&#xff0c;不过竟因流量太大成本过高而下线。近期热映的电影《花木兰》总是让人回想起 1998 年上映的同名动画电影。说起来&#xff0c;动漫真人化或动画版翻拍…

网站位置服务器,如何查看网站的服务器位置

如何查看网站的服务器位置 内容精选换一换华为云主机迁移服务帮助中心&#xff0c;为用户提供产品简介、快速入门、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用主机迁移服务。用户云服务器基本网络功能异常&#xff0c;无法完成…

网络安全系列之七 网站提权

上传了webshell之后&#xff0c;我们的目的是获取服务器的系统管理员权限&#xff0c;这也是黑客入侵的最终目的。 “H4ck Door”是一个很牛的大马&#xff0c;提供了很多功能&#xff0c;我比较喜欢的是执行cmd命令来提权。 首先执行“net user”命令查看服务器有哪些用户&…