我最近发现自己需要通过WordPress的媒体管理器(media-upload.js)删除绑定到窗口resize事件的函数,因为它干扰了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];
})
在这里,我循环浏览事件,从中删除空格,制表符和新行,并将它们与我正在寻找的内容进行比较,当我找到它时,我将它扔出该死的气闸。在这种情况下,附加函数可能没有空格,制表符或新行,但就我所知,这种方式也适用于更复杂的函数。
这样做是否更容易和/或更优雅?这是灾难的秘诀吗?
答案 0 :(得分:1)
为事件注册处理程序时,可以使用限定符:
$('#something').bind('click.removeMeSomeday', function() { ... });
然后当你需要删除它时,你可以这样做,而不必打扰其他处理程序“click”。
现在,我发现你可能无法影响Wordpress绑定其事件处理程序的方式。
答案 1 :(得分:1)
另一种方法可能是使用WordPress系统排队/取消队列或注册/取消注册脚本。取消注册media-upload.js,然后排队自己的版本。
炳廷