2013-02-15 65 views
0

我想提供一种方法来使用插件外部的事件处理函数on。问题是,如果我以错误的顺序提供触发器,触发器将不会被触发。jQuery触发器方法的顺序有多重要?

例如,这个工程:

$(window).on('foo:bar', function(){ 
    alert(true); 
}); 
$(window).trigger('foo:bar'); 

...这一点,但是并不:

$(window).trigger('foo:bar'); 
$(window).on('foo:bar', function(){ 
    alert(true); 
}); 

任何想法第二种方法如何工作的?

更新

这里它的工作原理:http://www.benplum.com/projects/rubberband/

+0

??糊涂??第一个*不起作用*。第二个是。 – Archer 2013-02-15 10:34:50

+0

好的,现在你已经换了个例子:) – Archer 2013-02-15 10:35:50

+0

@Archer是的,我有点累了:P – yckart 2013-02-15 10:36:49

回答

2

你不能。在烘烤之前你想吃蛋糕。

UPD:你在http://www.benplum.com/projects/rubberband/

这里曲解的代码是一个证明的jsfiddle,像你在想这是行不通的:jsfiddle.net/zerkms/z5Mya/

备注代码:我已经分叉的图书馆又加了微不足道的console.log这里:https://github.com/zerkms/Rubberband/blob/master/jquery.bp.rubberband.js#L77

+0

哈尔,很好的答案!不过,我已经看到它的工作原理:https://github.com/benplum/Rubberband/blob/master/jquery.bp.rubberband.js#L79 – yckart 2013-02-15 10:35:22

+0

@yckart:我看不到他们添加事件处理程序 – zerkms 2013-02-15 10:42:03

+0

@yckart:同时检查https://github.com/benplum/Rubberband/blob/master/jquery.bp.rubberband.js#L42 - 在附加处理程序后,该方法被称为** – zerkms 2013-02-15 10:43:57