【发布时间】:2012-12-24 16:07:34
【问题描述】:
我想覆盖 Drupal 菜单编写的悬停事件。因为我无法修改 Drupal 编写的代码,所以我想知道如何查看它然后覆盖它。
【问题讨论】:
标签: jquery drupal jquery-events
我想覆盖 Drupal 菜单编写的悬停事件。因为我无法修改 Drupal 编写的代码,所以我想知道如何查看它然后覆盖它。
【问题讨论】:
标签: jquery drupal jquery-events
您可以通过检查页面中包含的 JavaScript 来查看代码是如何工作的...我想使用像 Drupal 这样的 CMS,使用构建在 jQuery 之上的 JavaScript,试图找到添加此事件的确切位置将类似于查找大海捞针。
虽然$('selector').off('eventName'); 将在基本情况下工作(即,如果事件处理程序直接附加到元素),但在处理程序绑定到祖先的情况下将不起作用.
解决此问题的最简单方法是将您的自己的事件添加到元素并使用stopPropagation() 来停止触发已绑定到祖先的事件处理程序。
$('selector').off('eventName').on('eventName', function (e) {
e.stopPropagation();
});
...对此的简写是通过false 而不是function:
$('selector').off('eventName').on('eventName', false);
欲了解更多信息,请参阅on()。
【讨论】:
使用events 对象查看附加到对象的事件:
$('selector').data('events')
或者您可以一起删除 jQuery 事件:
$('selector').off('eventName');
【讨论】:
data('events') 将在没有 migrate 插件的情况下 no longer works in jQuery 1.9。