问题标签 [event-delegation]

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 投票
4 回答
7864 浏览

javascript - 如何将 Javascript 事件处理程序注册到尚未添加到页面的元素

我正在尝试构建一个greasemonkey 脚本,该脚本将根据用户与...其他动态创建的数据表的交互动态创建数据表。我的问题是,每次创建表时我都必须进行两次传递:一次创建表,另一次获取表中我想要添加事件处理程序的所有对象(按 id)并添加他们的各种事件处理程序。

onClick例如,如果我在创建表并将其插入 HTML 之前尝试将事件添加到表 td,则会收到“组件不可用”异常。

这非常麻烦,因为我要么必须单独维护一个 id 列表以及在我第二次添加处理程序时应该对这些元素做什么,要么开发一个我知道的命名约定,基于id,我应该对元素做什么。

必须有更好的方法来做到这一点。我只是还没有弄清楚。有人有想法么?

0 投票
6 回答
2241 浏览

jquery - jQuery 事件委托 + 子定位帮助

我在一个页面上显示了一堆来自用户的帖子。我有一个类名为“posts”的主要父 div,每个帖子都输出到一个类名为“row”的 div 中。所以在 div.posts 中有很多 div.row。每个看起来都是这样的。

通过 CSS,actions-column 默认设置为 display:none。当用户将鼠标悬停在帖子 (div.row) 上时,我想显示操作列。我最初的做法是为每一行设置一个鼠标悬停,这会对浏览器造成影响并减慢速度。我做了一些研究,偶然发现了事件委托,并决定试一试。到目前为止,我能够确定哪一行被定位,但是,我无法弄清楚如何使用“actions-column”类来定位它的子div。

到目前为止的代码...

0 投票
5 回答
954 浏览

javascript - 哪些 JavaScript 库具有事件委托?

我想尝试一个新的 JavaScript 库。使用(并且喜欢)j Query 1.3 的“实时”事件后,我更喜欢下一个库,我尝试将事件委托内置到事件系统中。Wikipedia 的 JS 库比较在这里很重要。

看起来MooTools 正在 2.0 中获得它。其他人呢?

我正在制作这个社区维基。请帮我填写清单。

原型:没有

jQuery:从 1.3 开始

MooTools:从 2.0 开始

ExtJS:是的

0 投票
2 回答
163 浏览

javascript - 定义事件委托者的正确语法

通常,您为按钮单击编写一个处理程序,如下所示:

但在事件委托者的情况下,使用如下函数响应事件:

我感到困惑的是定义调用这个委托函数的事件的正确语法 - 这个?(一种):

或这个?(乙):

哪个是正确的,为什么?

0 投票
4 回答
276 浏览

javascript - 是否有关于何时在 JQuery 中使用事件委托与事件处理的经验法则?

我对何时应该使用事件委托而不是开箱即用的 JQuery 事件处理感到困惑。

我总是很想使用事件处理程序,因为它在 JQuery 中非常简单:

例如:

事件委托的编写实际上并没有那么复杂:

但它似乎并不那么直观。

是否有关于何时使用事件委托的简单经验法则?我想我真的不明白它的重点。

0 投票
4 回答
2768 浏览

javascript - JQuery 代码中使用的 CSS 类上的事件侦听器的性能开销

如果我的标记如下所示:

我定义了以下 jQuery:

  1. 建立了多少个事件监听器?1 还是 3?

  2. 如果我有 1000 个按钮而不是 3 个,我应该改用事件委托吗?

  3. 如果这些类在标记中包含大量元素,最好不要在元素类上定义 jQuery 调用?

0 投票
1 回答
280 浏览

javascript - 使用事件委托观察具有特定类的元素或该元素的子元素的事件

我有一个页面,其元素类似于:

代码与此类似:

因此,如果我单击 .activator 或其任何子元素,我想在 .activator 上调用一个函数,我只是想知道是否没有某种方法可以组合这两个 if 子句。像 if (e.match('.class, .class *') { doStuff(e.upOrSelf('activator')); }

我想我可以使用 upOrSelf 方法扩展 Element。但如果可能的话,我宁愿不做任何非标准的定制。

0 投票
2 回答
1323 浏览

jquery - 使用 jquery UI droppable 和 livequery 的问题!

我有一些要删除的元素的代码

var $tab_items = $("ul:first li",$tabs).droppable{ tolerance: 'touch' ,....

它工作正常,但问题是当我通过 ajax 或 javascript 加载另一个按钮时,它不起作用,因为新元素没有对此事件的绑定。

在其他类似的情况下,我找到了使用 livequery(事件委托)的解决方案,但在这里它是不可能的,因为我不想附加一个函数,我想在第一行代码上附加相同的函数。

有什么解决方案比在每个新对象加载后制作 dropabble 更好?

0 投票
11 回答
129262 浏览

javascript - 什么是 DOM 事件委托?

谁能解释一下 JavaScript 中的事件委托以及它有什么用处?

0 投票
5 回答
481 浏览

javascript - 简单的点击事件委托不起作用

我有一个 div

现在,使用事件委托和冒泡的概念,我想拦截来自 myDiv、myLink 和 anotherDiv 中的任何一个的点击。

根据最佳实践,这可以通过在文档本身上监听全局点击(因此称为“委托”)来完成

请参阅上面的警报问题。我的印象是点击会冒泡。它在某种程度上确实如此,因为该文档实际上收到了我的点击并开始委派。但是点击 myLink 和 anotherDiv 的冒泡机制似乎不起作用,因为 if 语句没有启动。

或者是这样的:只点击气泡一步,从点击的 src 元素到分配的委托对象(在本例中为文档)?如果是这种情况,那么我需要像这样处理委托:

但是这种方式违背了委托的目的,因为我现在必须有很多“myDiv”处理程序,可能还有其他......只有一个“文档”事件委托对象非常容易。

任何人都知道这是如何工作的?