【问题标题】:A better way to search for events?搜索事件的更好方法?
【发布时间】:2010-02-27 23:55:23
【问题描述】:

我最近发现自己需要通过 WordPress 的媒体管理器 (media-upload.js) 删除绑定到窗口调整大小事件的函数,因为它干扰了Thickbox 的正确使用。活动附件如下:

a(window).resize(function(){tb_position()})

我花了一段时间,但我终于发现我可以这样做:

jQuery.each( jQuery(window).data('events')['resize'], function(i, event) {
    var thisEvent = event.toString().replace(/\n/g, '').replace(/\t/g, '').split(' ').join('');
    var expectedEvent = 'function(){tb_position()}';

    if (thisEvent == expectedEvent)
        delete jQuery(window).data(‘events’)[‘resize’][i];
})

在这里,我循环浏览事件,从中删除空格、制表符和新行,并将它们与我正在寻找的内容进行比较,当我找到它时,我将它从该死的气闸中扔掉。在这种情况下,附加函数可能没有空格、制表符或换行符,但据我所知,这种方式也适用于更复杂的函数。

有没有更简单和/或更优雅的方式来做到这一点?这是未来灾难的秘诀吗?

【问题讨论】:

    标签: javascript jquery events wordpress


    【解决方案1】:

    当您为事件注册处理程序时,您可以使用限定符:

    $('#something').bind('click.removeMeSomeday', function() { ... });
    

    然后,当您需要删除它时,您可以这样做,而不会打扰其他处理程序的“点击”。

    现在,我想到您可能无法影响 Wordpress 绑定其事件处理程序的方式。

    【讨论】:

    • 是的,我确实知道这一点,并在我自己的代码中使用它。但是,正如您也提到的,对于 WordPress 如何绑定其事件处理程序,我无能为力。
    【解决方案2】:

    另一种方法可能是使用 WordPress 的系统来排队/取消排队或注册/取消注册脚本。取消注册 media-upload.js,然后将您自己的版本加入队列。

    预科

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2015-09-11
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多