6

我必须修改使用 jQuery 的就绪处理程序的站点,我不想重用代码并且不必再次编写它,但是我需要更改原始就绪处理程序的行为,问题是:

  • 如何删除准备好的处理程序(应用新的)?
  • 或者如何覆盖现有的就绪处理程序(原来使用了匿名函数)?

此致

4

1 回答 1

5

好的,显然你不能取消绑定准备好的处理程序,准确地说,你不能在使用ready()时,但你可以使用bind('ready', handler)所以而不是

$(document).ready(handler);

利用

$(document).bind('ready', handler);

然后每当您想更改现有的事件处理程序时,请使用:

$(document).unbind('ready', handler);//when there is reference to the handler

或者

$(document).unbind('ready');//to remove all handlers for ready event

正如我最近发现的那样,您可以添加事件命名空间:) 以仅删除该命名空间中的就绪事件(我已经查看了 jplayer 代码),如下所示:

var GD_EVENT_NAMESPACE = ".GrelaDesign";
$document.bind('ready' + GD_EVENT_NAMESPACE, function(){ alert('ready'); });
//later
$document.unbind('ready' + GD_EVENT_NAMESPACE);//this will remove only specific events

此致

ps我在这里问之前进行了广泛的搜索:),在我问完之后不久我就找到了答案:-)

于 2012-07-05T21:31:32.107 回答