【问题标题】:Can I make events propagate between originator and descendants?我可以让事件在发起者和后代之间传播吗?
【发布时间】:2015-04-25 04:35:34
【问题描述】:

我知道如果我有一个元素触发一个事件,它会向上传播到根,然后返回到原始元素。基本上,所有祖先都会收到通知。但我想通知所有的后代。我可以这样做吗?

谢谢,瑞克

【问题讨论】:

  • 不是这样设计的,但可能有解决方法。你有具体的例子吗?
  • 主要用于布局。如果有人调整外部 div 的大小,我希望所有子 div 都知道他们有更多或更少的空间。
  • 对我来说,这听起来像是 CSS 的工作。
  • 是的,你可以。你能提供一个你可能会使用它的代码示例吗?
  • 我正在使用 jquery ui 的可调整大小的“小部件”(行为)来移动窗扇并调整面板的大小。 div 包含两个面板。当我使可调整大小的面板变大时,另一个面板自然会变小。我想告诉它的孩子,他们可能需要重新安排自己。今晚我会试着做一个 jsfiddle。

标签: javascript jquery events dom browser


【解决方案1】:

这是可能的,我的代码可能有一些错误,但这里是:

elem = document.querySelectorAll('#my-element')[0];

function callClickOnDescendants(element, event){
  for (var i = 0, len = element.children.length; i < len; i++){
    element.children[i].onclick.call(element.children[i], event);
    callClickOnDescendants(element.children[i], event);
  }
}

elem.onclick = function(event){
  callClickOnDescendants(elem, event);
}

如果您在投票前等待,我将能够在 jsfiddle 中进行测试。 编辑 它有效,jsfiddle proof

【讨论】:

  • 嗨,古斯蒂。我想我明白了。我可以自己为每个孩子调用事件处理程序。我看到你是如何递归地沿着树向下走的。谢谢!我想我可以用这个。
猜你喜欢
  • 2019-07-22
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 2014-03-10
  • 2022-08-14
相关资源
最近更新 更多