gpt4 book ai didi

javascript - FlightJs 事件传播

转载 作者:行者123 更新时间:2023-11-30 17:17:48 28 4
gpt4 key购买 nike

这是一段index.html:

<div id="top">
<div id="lvl1a">
</div>
</div>

我已将两个 flightJS 组件附加到该结构。

一个用于顶部元素:

function top() {
this.after('initialize', function () {
console.log('[DEBUG] Top initialized.');

this.on('broadcastEvent', function (e, data) {
console.log("[DEBUG] Broadcast recived: " + data.message);
});
this.trigger('broadcastEvent', {
message: "This is a broadcast message."
});
});
}

第二个是 lvl1a:

function lvl1a() {
this.after('initialize', function () {
console.log('[DEBUG] Lvl 1 a initialized.');

this.on('broadcastEvent', function (e, data) {
console.log("[DEBUG] Broadcast recived: " + data.message);
});
});
}

我的输出是:

[DEBUG] Top initialized.
[DEBUG] Broadcast recived: This is a broadcast message.
[DEBUG] Lvl 1 a initialized.

为什么事件没有传播到子节点?我怎样才能做到这一点?

编辑:我发现这些事件是自下而上传播的。有没有可能改变它?

最佳答案

Flight(实际上是 jQuery)使用标准的 DOM 事件传播模式 - 事件从子级冒泡到父级。

因此,为了接收来自所有 child 的通知,您应该将事件处理程序放在文档根元素 ( <html> ) 或公共(public)容器元素上,如 <body> .

试试这个

function lvl1a() {
this.after('initialize', function () {
console.log('[DEBUG] Lvl 1 a initialized.');

$(document.body).on('broadcastEvent', function (e, data) {
console.log("[DEBUG] Broadcast recived: " + data.message);
});
});
}

关于javascript - FlightJs 事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25751694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com