0

我正在使用一个使用 angular 指令的 jquery 插件。我在处理角度事件处理程序时遇到问题。我有一个 Angular 的 keydown 事件处理程序,jquery 插件也有相同的事件处理程序。当我执行任何按键事件时,角度检测到事件返回 false / event.preventDefault()。但它仍然调用 jquery 插件中的事件处理程序。知道如何阻止事件处理程序从 angular 转到 jquery 事件处理程序吗?

4

1 回答 1

0

首先,您可能不应该将 Angular 事件与 jQuery 事件一起处理。但如果必须,请尝试使用event.stopPropagation()

如果这不能解决问题,您可以检查事件是否在您的 jQuery 中停止:

event.isPropagationStopped()

它返回一个布尔值。http://api.jquery.com/event.isPropagationStopped/

最坏的情况,你持有一个共享标志(变量在角度事件处理程序和 jQuery 事件处理程序的范围内可见),始终确保将 jQuery 处理程序延迟几毫秒,然后在你的角度处理程序中提高isHandled标志. 当涉及到您的 jQuery 事件处理程序时:如果标志是false处理事件。如果 flag 是true较低的 flag 并且不处理就返回。

但是你最好的选择是只在 Angular 中处理事件并失去 jQuery。

于 2013-09-05T22:11:02.203 回答