gpt4 book ai didi

javascript - 停止应用于主干中同一事件对象的事件传播

转载 作者:行者123 更新时间:2023-12-01 03:54:05 24 4
gpt4 key购买 nike

我已通过 2 个不同的回调将相同的自定义事件应用于主干中的事件对象。

var ourObject = {};

_.extend(ourObject, Backbone.Events);
function dancing (msg) { console.log("We are dancing. " + msg); }
function jumping (msg) { console.log("We are jumping. " + msg); }
ourObject.on("move", dancing);
ourObject.on("move", jumping);

当我使用 ourObject.trigger("move", "Yeah!"); 触发移动事件时,它将触发两个回调。

如何防止第一次回调触发第二次回调?

最佳答案

您可以传递一个包含标志的对象作为第二个参数,该标志充当事件对象:

function dancing(msg, event) {
console.log(event); // flag: false
event.flag = true;
console.log("We are dancing. " + msg);
}

function jumping(msg, event) {
console.log(event); // flag: true
if(!event.flag) return;
console.log("We are jumping. " + msg);
}

ourObject.trigger("move", 'test', {
flag: false
});

或者您可以简单地执行以下操作:

function dancing (msg) {
this.dancingTriggered = true;
console.log("We are dancing. " + msg);
}
function jumping (msg) {
if(this.dancingTriggered){
this.dancingTriggered = false;
return;
}
console.log("We are jumping. " + msg);
}

或者只使用这些回调范围内可用的简单变量

关于javascript - 停止应用于主干中同一事件对象的事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42920451/

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