问题标签 [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 投票
1 回答
1179 浏览

c# - WPF中的冒泡事件?简单的问题

这可能是一个非常容易解决的问题,但我在处理事件方面缺乏经验,所以我只是想问一下。

我有一个 ListBox,里面有 ListBoxItems。这些 ListBoxItem 将绑定到数据源,因此它们会发生变化。当对这些 ListBoxItem 中的任何一个执行 MouseDown 操作时,我需要引发一个 MouseDown 事件(因为我正在执行拖放操作)。由于值在变化,我不能期望在 XAML 中将事件连接在一起,如下所示

如果我有静态值,这将很容易,但由于 ListBox 中的值会改变,我更愿意编写以下 XAML

然后,当 ListBoxItem 被选中时,它会将事件冒泡到这个 MouseDownEventName,那时我可以抓取 ListBox1.SelectedItem,问题是,我现在正在尝试这个,但它不起作用。我有以下代码来处理 MouseDown,它目前仅重写标签内容以表示该项目已被 MouseDown'ed。

0 投票
1 回答
49865 浏览

javascript - Javascript:如何启用 stopPropagation?

有了object.stopPropagation()我可以停止事件冒泡,但我怎样才能重新启用它?

js中是否有类似的预定义函数object.startPropagation

编辑:

问题是 JS 记得如果你点击“对象”而不是在我不想要它之后总是停止事件冒泡,所以我想停止它:

0 投票
1 回答
609 浏览

javascript - GWT:同一个 div 上的两个 DOM 事件,优先级以及在调用第一个事件时如何停用第二个事件?

我有一个 Widget,它有两个 Dom mouseDown 处理程序:

首先,我使用 GWT 进行编码,但我认为问题可能与 Javascript 相关。

此处理程序注册之一是在名为 Resizable 的类中定义的,它允许我的小部件可调整大小。第二个处理程序注册在一个名为 Draggable 的类中定义,它允许我的小部件是可拖动的。

因此,在这两个类的每个构造函数中(在参数中给出小部件),我有:

我想优先考虑我的 dom 事件,以强制首先调用 Resizable 处理程序,并且仅在 Draggable 处理程序之后调用。我怎样才能实现它?

此外,如果调用了可调整大小的处理程序,我想停止事件。我尝试了该event.stopPropagation()功能,但似乎只能为父母停止该事件,而不能为同一小部件​​上的类似事件停止。

如果我的小部件可调整大小,如何停止此事件以避免调用可拖动处理程序?

我确切地说这两个类是完全独立的,因为我的小部件可以调整大小但不可拖动,可拖动但不可调整大小或两者兼而有之。所以如果可以的话,我想避免这两个类之间的代码交叉。

谢谢

0 投票
2 回答
1126 浏览

objective-c - NSNotification 概念 - 哪段代码在哪里?

我的一部分认为我理解 NSNotification 概念。这是一个集中的广播系统,带有基于字符串的通知。在一侧张贴,在另一侧或多侧观察并采取相应行动。不过,我的另一部分,即必须编写代码的部分,每次我需要通知时都会感到困惑。哪些代码进入哪个标头/实现,哪些文件实际进行观察以及如何防止它变得一团糟?是时候把它理顺了,你能帮我验证这些假设吗?我对第 4 名相当有信心,但第 5 名中奖了。


  1. NSNotification 是在 [NSNotification defaultCenter] 的帮助下创建的,不会分配/初始化 NSNotification。正确的?
  2. 执行 postNofification 壮举的对象始终传递self到发布代码:[[NSNotificationCenter defaultCenter] postNotificationName:@"note name" object:self]。正确的?
  3. 事件冒泡存在于其他语言中,但在带有 NSNotification 的 Objective-C 中不存在。您不传递通知,您使通知名称足够具体以供全球广播使用。正确的?
  4. 如果您仍想传递对象 A 发布的通知,您可以在 B 中观察它,处理它并发布一个新的、更具体的通知以供对象 C 观察。例如。@"MenuItemTapped"从 A 到 B,@"NavigateTo"从 B 到 C。对吗?
  5. 通知的名称是一个 NSString。因为发布者和观察者都希望避免拼写错误,我们将 NSString 常量存储在[extern const|define|class method|none of the above]中。你能帮我挑一个吗?
    • 一种尝试是创建类似NotificationNames.h文件的东西,其中包含所有extern NSString *const NOTE_NAME声明。然而,这破坏了通知的可移植性。
    • 另一种尝试是对 NSNotification 进行子类化(使用 XCode 模板来保持快速创建),但是因为这个概念是从 AS3 中的 Event-class 的子类中获取的,所以它看起来非常不客观。还有一个奇怪的问题是你不能在 NSNotification 上调用 [super init],所以事情开始失控了。
    • 我对这个问题的麻烦来自于繁琐的#import陈述。如何最小化拼写错误,同时保持常量/定义的可移植性?
0 投票
2 回答
2980 浏览

javascript - Stop bubbling events seems not work on internet explorer in google pages

I am working in a browser extension. I am putting some icons next to links in google search pages. These icons trigger some actions and I need stop bubble events after user clicks on it. In resume, parent div tags must not know about clicks on these icons.

Next code allow stop bubbling events in all browsers:

In Firefox works well but in this context not works in IE (version 8 at least). Any idea about it?

0 投票
2 回答
476 浏览

jquery - 处理jQuery中的事件冒泡

我有一个看起来像这样的简单 HTML 表格

我想同时处理行点击和超链接点击。由于 hepher 链接已经附加到 callAction() 函数,我使用 jquery 将点击事件添加到行

现在的问题是每次我点击超链接时,行点击事件也会触发。我该如何防止这种情况。

0 投票
4 回答
3529 浏览

jquery - 忽略重叠 div 的鼠标事件

一个页面有 4 个 div:

  1. 项目 A
  2. B项
  3. 项目 C
  4. 详细信息(隐藏)

想要的效果是当鼠标悬停在项目框上时会显示详细信息框,一旦鼠标移出就会隐藏。显示时,详细信息框将与项目框右侧约 20% 重叠。

但是,我得到的当前错误效果是,当我将鼠标悬停在任何项目框的右边缘时,它会进入显示和隐藏详细信息框的永久循环。大概这是因为它触发了 Item 框的 mouseout 事件(当 Details 显示时),但在 Details 框隐藏时立即再次触发 mouseover 事件。我想知道如何解决这个问题。

我目前的代码是:

提前感谢您的任何指点!这是任何无法可视化的人的 jsfiddle 链接。尝试将鼠标悬停在右侧的项目框上,然后稍微移动鼠标,您会看到闪烁的情况。

http://jsfiddle.net/s6CjP/1

Xavier,我已经为详细信息框尝试了 appendTo,但我想要的效果是我想让鼠标事件只针对可操作的 div(即项目)。经过一些研究,我什至很确定这是否可能,因为详细信息框覆盖了 div(因此无法将事件附加到它下面的东西)

0 投票
3 回答
5946 浏览

silverlight - Silverlight KeyDown 事件的行为

在我的 Silverlight 4DataGrid控件中,我想附加一个非常简单的行为,它在按键上执行自定义命令 - 实际上,在按 ENTER 键时提交 DataGrid 中的选定项目。

虽然行为实际上有效(请参阅我的代码...

...)我有一个问题,DataGrid 似乎自己处理 ENTER 键按下并继续到下一行。显然,发生的情况是提交了错误的行,因为当我处理按键时,行选择已经改变。

这是 XAML:

你能告诉我如何防止默认的 ENTER 事件吗?

0 投票
2 回答
2474 浏览

wpf - 从 UserControl 引发 MouseButtonEvent 时,MainWindow 无法访问 MouseButtonEventArgs

仍然爬上陡峭的WPF山,痛苦。

我已经定义了一个 UserControl,我的 MainWindow 需要检索来自 UserControl 内部控件的 MouseButtonEventArgs(例如鼠标 e.GetPosition)

在后面的 UserControl 代码中,我完成了注册并引发了冒泡事件。

现在在我的 MainWindow 中,我像这样声明 UserControl:

后面的代码

我从 UserControl 接收事件,但 Args 是 RoutedEventArgs(这是正常的),但我无法访问获取鼠标 e.GetPosition 所需的 MouseButtonEventArgs。

在这种情况下,您会建议什么优雅的解决方案?

0 投票
2 回答
6304 浏览

javascript - JQuery - 在所有浏览器中停止事件冒泡

我有一些大规模嵌套的 GUI 控件——当它们被单击或更改时,或者我需要阻止事件在 DOM 树中进一步上升时。它需要适用于所有浏览器。

在这一点上,我有一些相当笨重的 JS 代码:

这确实有效,但它闻起来感觉不对(我个人讨厌空的 catch 块)。我可以使用更简洁的 x 浏览器技巧吗?