【问题标题】:Propagate all events from one element to another with jQuery使用 jQuery 将所有事件从一个元素传播到另一个元素
【发布时间】:2013-06-01 21:53:26
【问题描述】:

我正在尝试为一个元素构建一个包装器,并且我想为我的包装器创建一个无缝集成。为了实现这一点,我想将所有事件从一个元素传播到另一个元素,以创建一个镜像来说明这一点。

假设我有#element-1 和#element-2。我给#element-1 一个“点击”处理程序。期望的行为是每当点击发生时,无论是在#element-1 还是#element-2,处理程序都应该触发。此外,如果为 #element-2 分配了不同的“点击”处理程序,则两个处理程序都应该触发。

不要担心无限冒泡,我会找到一种机制来解决这个问题。我的问题是如何在不编写所有事件名称的情况下为这两个元素的所有可能事件实现此事件镜像(我还想获取自定义事件,因此不能对事件名称进行硬编码)?

我对可能不使用 jQuery 的解决方案持开放态度,只要它实现了我所描述的。

【问题讨论】:

  • 据我所知, .data('events') 检索 bound 事件列表,该列表不是实时的。我有什么方法可以使它适用于将来可能绑定的任何事件,而无需计时器或类似的东西?
  • 不是 AFAIK。事件没有通配符或类似内容。您可能可以通过覆盖$.fn.bind来做到这一点。
  • 计时器比覆盖 jQuery 属性更可取,因为我正在编写一个插件,我的目标是尽可能不引人注目。我担心我可能没有其他选择。谢谢! (我是这里的新手,有什么办法可以给cmets出名吗?)
  • (不,对 cme​​ts 问题的代表)

标签: javascript jquery events


【解决方案1】:

假设在 div ids #event-1, #event-2, ... #event-10 中有 10 个锚元素。您可以编写如下事件处理程序。

for(i=0;i<=10;i++) {
  if ($(".event-"+i).find('a').length > 0) {
    var g = $(".event-"+i).find('a');
    g.click(function(){
      /* Your code */
    });
  }
}

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2011-07-24
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    相关资源
    最近更新 更多