问题标签 [event-bubbling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7695 浏览

javascript - Javascript Mouseover 从孩子那里冒泡

我有以下 html 设置:

它的样式是这样的,所以你不能悬停 div1 而不悬停其他 2 个 div 之一。现在我在 div1 上有一个鼠标悬停。
问题是当我从 content1 移动到 content2 时,我的 div1.mouseout 被触发,因为它们的 mouseouts 正在冒泡。
并且事件的目标,currentTarget 或relatedTarget 属性永远不会是div1,因为它永远不会直接悬停......
我一直在为此疯狂搜索,但我只能找到与我需要的相反的问题的文章和解决方案。这似乎微不足道,但我无法让它工作......
div1 的 mouseout 应该只在鼠标离开 div1 时触发。

一种可能性是在鼠标进入和鼠标离开时设置一些数据,但我相信这应该开箱即用,因为它只是一个鼠标退出......

编辑:

将 mouseout 更改为 mouseleave 并且代码有效...

0 投票
2 回答
2531 浏览

jquery - jquery focusin() 和防止冒泡

更新 2:

我睡在上面,然后编写了一些示例代码来尝试进一步找出问题所在。

这是一个使用 firebug 的 console.log 的示例,向您展示哪个对象触发了 focusin 事件:

http://jsbin.com/axefo3/11

1)点击第一个链接:黄色div显示2)点击tab键:它应该进入黄色div内的链接

它这样做了,但随后它触发了 focusin 事件,并且由于某种原因,它似乎再次冒泡到红色 div,然后被告知关闭黄色 div。

这甚至在我告诉黄色 div 不要传播焦点事件之后:

然后,我仅在关注内部 div 之后尝试将 focusin 事件附加到父 div 上。

http://jsbin.com/axefo3/16

发生的情况是,在内部 div 中的第一个链接上的选项卡确实在父 div 上设置了 focusin 事件。这很好!但是,然后在 innerdiv 中的下一个链接中跳出 focusin 事件再次关闭 div。

所以,我想我仍然很难过。看来我无法阻止专注于冒泡。想法?理论?

下面是原帖...

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

我正在通过 onclick 事件显示一个 div。如果您单击 div 外部,我想隐藏它。为此,我在正文上绑定了一次单击事件:

在 div 本身中,我告诉它不要传播事件,以便在 div 中实际单击不会触发对主体的单击:

这按预期工作正常。

如果 div 中有一个标签,我也想隐藏 div。

我的想法是,在那种情况下,我可以在 body 上使用 focusin 事件:

同样,我不希望事件从 div 本身中冒出来,所以添加了这个:

这不起作用。在 myDiv 中更改元素内的焦点会触发 body 上的 focusin 事件。

这可能是 jQuery 中的错误吗?如果是这样,有没有更好的方法来实现这一点?

更新:

问题似乎是似乎没有办法确定 DIV 是否失去焦点,因为它永远不会有焦点。我的解决方案逻辑是查看 ELSE 的焦点是否在 div 之外(因此使用 focusin),但我遇到了 div 中的 focusin 事件似乎通过在身体上触发而冒泡的问题。

现在,我认为我的解决方案必须是在弹出窗口中添加一个 CLOSE 元素,然后让人们必须明确地触发它。但并不理想,尤其是对于键盘导航。

0 投票
1 回答
241 浏览

ruby-on-rails - 验证不会冒泡到我的其他模型

好的,我在人、用户和员工之间建立了一种关系,即所有员工都是用户,所有用户都是人。Person是一个User派生自它的抽象类Employee

现在......我有一个EmployeesController类,create方法如下所示:

如您所见,当我使用该:polymorphic => true子句时,您访问超类的方式是执行类似@derived_class_variable.super_class_variable.super_super_etc. Person班级有一个,当validates_presence_of :first_name它满意时,在我的表格上,一切都很好。但是,如果我省略了名字,它不会阻止员工得救。发生的情况是员工记录已保存,但人员记录未保存(因为验证)。

如何让验证错误显示在 flash 对象中?

0 投票
1 回答
8992 浏览

c# - 禁用事件冒泡 c# wpf

我遇到以下问题:

当我得到两个标签时:

以及以下代码:

当我单击“第二”时,我希望它只触发“Label_MouseUp_1”。但在我的控制台中,我得到:

给我
看 不要给我看

有没有办法关闭冒泡事件?

(另外,“First”必须是可点击的,所以删除那里的事件并不能解决问题)

谢谢

0 投票
2 回答
150 浏览

jquery - 包含绑定到同一事件的 div 和锚链接

我无法弄清楚如何将 mouseout() 绑定到我的整个导航栏,包括链接。

当用户将鼠标悬停在#nav 中的链接上时,会显示一个子菜单。一切都很好。

我想要做的是当用户将鼠标悬停在整个#nav之外时淡出该子菜单。

我的鼠标移出代码:

当我将鼠标悬停在#nav 中的锚链接上时,我看到了子菜单。然后我猜 mouseout() 甚至会触发并且子菜单会淡出。无论如何,有没有#nav和其中的任何锚链接作为一个?

我会粘贴我的标记,但即使缩进 4 个空格仍然显示为呈现的 html..

示例页面:http ://chrisparaiso.com/test/

0 投票
1 回答
1402 浏览

javascript - 在Javascript中停止事件冒泡

我有一个像这样的html结构:

我希望onmouseout仅从主 div 触发事件,而不是 div 中的“a”或“ul”或“li”标签!

我的onmouseout功能如下:

有人可以告诉我如何阻止事件冒泡吗?我尝试了stopPropogatio其他网站上提供的解决方案(等),但我不确定如何在这种情况下实施它们。

任何帮助将不胜感激。

0 投票
1 回答
1003 浏览

jquery - 动画查询冒泡 - 使用 slideToggle 时如何正确处理?

我需要以下问题的答案...我在使用 slideToggle 时遇到问题我无法使用 .stop() 处理它的动画查询,但我可以使用 .stop(true,true) 处理它,但它削减了我的动画。我想在没有任何插件的情况下顺利处理它,例如:我希望它等到动画完成。

0 投票
2 回答
37649 浏览

jquery - jQuery stopPropagation 冒泡

我有一个 div 里面有一个链接:

点击<div />应该去某个地方,但点击孩子<a />应该去 www.lol.com。我从之前的问题jQuery 网站中看到 .stopPropagation 可以防止向上冒泡,但是如何防止向下冒泡(这不是这里的必要条件吗?)。

0 投票
3 回答
6148 浏览

javascript - 如果你删除了一个 DOM 元素,任何以该元素开始的事件是否会继续冒泡?

如果我删除用于启动事件气泡的 DOM 元素,或者其子元素启动了事件气泡,我应该期待什么行为 - 如果元素被删除,它会继续冒泡吗?

例如 - 假设您有一个表格,并且想要检测表格单元格上的点击事件。另一段 JS 执行了一个 AJAX 请求,一旦请求完成,该请求最终将完全替换表。

如果我单击表格,并且在表格被成功完成的 AJAX 请求替换后会立即发生什么?我问是因为我看到一些点击事件似乎没有冒泡的行为 - 但很难复制。

我正在表的父元素上观看事件(而不是将事件附加到每个 TD),但有时似乎无法到达。

编辑:再次遇到这个问题,终于找到了它的根源。根本不是事件冒泡问题!有关详细信息,请参阅下面的答案。

0 投票
2 回答
961 浏览

silverlight - Silverlight 中鼠标事件的全局应用程序挂钩

有没有办法注册全局事件处理程序以在 Silverlight 应用程序中捕获鼠标事件?我想避免订阅每个 FrameworkElement 的鼠标事件处理程序并找到更优雅的解决方案(冒泡事件)。谢谢