【问题标题】:How can I override JavaScript code injected by my CMS如何覆盖由我的 CMS 注入的 JavaScript 代码
【发布时间】:2012-12-24 16:07:34
【问题描述】:

我想覆盖 Drupal 菜单编写的悬停事件。因为我无法修改 Drupal 编写的代码,所以我想知道如何查看它然后覆盖它。

【问题讨论】:

    标签: jquery drupal jquery-events


    【解决方案1】:

    您可以通过检查页面中包含的 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()

    【讨论】:

      【解决方案2】:

      使用events 对象查看附加到对象的事件:

      $('selector').data('events')
      

      或者您可以一起删除 jQuery 事件:

      $('selector').off('eventName');
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 2013-04-16
      • 2017-07-12
      相关资源
      最近更新 更多