我可以让事件在发起者和后代之间传播吗?
Posted
技术标签:
【中文标题】我可以让事件在发起者和后代之间传播吗?【英文标题】:Can I make events propagate between originator and descendants? 【发布时间】:2015-04-25 04:35:34 【问题描述】:我知道如果我有一个元素触发一个事件,它会向上传播到根,然后返回到原始元素。基本上,所有祖先都会收到通知。但我想通知所有的后代。我可以这样做吗?
谢谢,瑞克
【问题讨论】:
不是这样设计的,但可能有解决方法。你有具体的例子吗? 主要用于布局。如果有人调整外部 div 的大小,我希望所有子 div 都知道他们有更多或更少的空间。 对我来说,这听起来像是 CSS 的工作。 是的,你可以。你能提供一个你可能会使用它的代码示例吗? 我正在使用 jquery ui 的可调整大小的“小部件”(行为)来移动窗扇并调整面板的大小。 div 包含两个面板。当我使可调整大小的面板变大时,另一个面板自然会变小。我想告诉它的孩子,他们可能需要重新安排自己。今晚我会试着做一个 jsfiddle。 【参考方案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
【讨论】:
嗨,古斯蒂。我想我明白了。我可以自己为每个孩子调用事件处理程序。我看到你是如何递归地沿着树向下走的。谢谢!我想我可以用这个。以上是关于我可以让事件在发起者和后代之间传播吗?的主要内容,如果未能解决你的问题,请参考以下文章