Javascript 一旦触发事件,即使我`$.unbind(';事件';)`也会触发所有处理程序。有没有办法防止事件发生后事件处理程序触发?

Javascript 一旦触发事件,即使我`$.unbind(';事件';)`也会触发所有处理程序。有没有办法防止事件发生后事件处理程序触发?,javascript,jquery,events,event-handling,Javascript,Jquery,Events,Event Handling,我正在创建一个原型机制,该机制允许其他模块订阅我们框架的主要事件,并使用延迟传递事件数组(约定)来控制逻辑流 如果下面的示例中有4个订阅事件的事件处理程序,则如果其中一个被拒绝,则整个机制应终止执行。 目前,为了防止事件处理程序(即插入的模块)执行,我在每个处理程序的顶部检查 !$.grep(options.deferredArray,function(item){return item.state() == "rejected" }) == 0; if (hasReje

我正在创建一个原型机制,该机制允许其他模块订阅我们框架的主要事件,并使用延迟传递事件数组(约定)来控制逻辑流

如果下面的示例中有4个订阅事件的事件处理程序,则如果其中一个被拒绝,则整个机制应终止执行。
目前,为了防止事件处理程序(即插入的模块)执行,我在每个处理程序的顶部检查

!$.grep(options.deferredArray,function(item){return item.state() == "rejected" }) == 0;
            if (hasRejected) return false;
一旦触发事件,即使I
$。取消绑定('OnPreRender')
所有4个处理程序仍会触发。在OnPreRender发生后,是否有办法防止这种情况发生?


这会解决你的问题。你可以用这个替换你的解绑/关闭

e.stopImmediatePropagation();

jsfiddle:

您可以从控制台日志中看到,所有4个仍在运行是的,我刚刚注意到。所以我添加了这个e.stopImmediatePropagation();现在只有一个。正在更新我的帖子。只需三次检查,您就可以用e.stopImmediatePropagation()替换未绑定的帖子,但是现在每次都给(1)。
e.stopImmediatePropagation();