首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >YUI事件似乎没有递归地工作。

YUI事件似乎没有递归地工作。
EN

Stack Overflow用户
提问于 2013-11-19 22:32:45
回答 1查看 69关注 0票数 2

我遇到了一段遗留的YUI3插件代码,试图将自己注入到基于事件的流中。基本上,代码将订阅一个事件X,并在处理程序中执行如下操作:

代码语言:javascript
运行
复制
if (!this._hasDoneStuff) {
    doStuff();
    event.preventDefault();
    fire("theEvent", newEvent);
}

preventDefault()调用似乎不起作用;事件继续正常进行。我成功地用一个小例子复制了这个例子:

代码语言:javascript
运行
复制
        var eidCounter = 0;
        this.publish("myEvent", {
            defaultFn: function (myEvent) {
                console.log("default function hit by event " + myEvent.eid);
            },
            context: this
        });
        this.on("myEvent", function (myEvent) {
            console.log("saw & prevented " + myEvent.eid);
            myEvent.preventDefault();
            if (myEvent.eid < 3) {
                this.fire("myEvent", { eid: eidCounter++ });
            } else {
                console.log("stopped " + mikeEvent.eid);
            }
        }, this);
        this.fire("myEvent", { eid: eidCounter++ });

我希望这永远不会运行默认函数,因为preventDefault()总是被调用的。然而,实际产出是:

锯防0 锯和防止1 锯和防2 锯防3 停止3 事件2命中的默认函数 事件1命中的默认函数 事件0命中的默认函数

因此,preventDefault()似乎只处理堆栈中的最后一个事件。这似乎是一个bug,但我是否真的违反了事件API的某些部分?有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 18:24:24

不幸的是,姚一直都是这样工作的。尽管从订阅中触发订阅事件似乎很奇怪,但它确实看起来像是一个bug。您可以在这里存档:https://github.com/yui/yui3/issues

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20083519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档