我在寻找通过新的东西添加到jQuery 1.7,我看到他们现在有jQuery.Callbacks()
http://api.jquery.com/jQuery.Callbacks/。
该文档显示了如何使用jQuery.callbacks(),但没有任何适用的例子,当我想使用它们。
看起来你可以从回调列表中添加/删除回调,你可以做jQuery.callbacks()。fire(args),但这只是触发所有的列表中的回调。也许我错过了一些东西,但这似乎不是很有用。
在我的头,当我第一次看到这个新的功能,我想你将能够使用它与键/值对。这将提供一个简单的方法来在应用程序中的单个位置管理回调函数。就像是
$.callbacks.add("foo",myFunction);
$.callbacks().fire("foo",args);
但是它看起来不像你可以触发特定的回调,你只能触发所有的给定的参数或没有一个。
我看到的最接近的事情是赋予.fire()函数上下文设置“this”属性的能力
.fireWith(context,args)
但这并不真正帮助太多。
>我误解了文档吗?
>如果这是所需的功能,这是一些适用的例子,这是有用的。
解决方法
扩展
@Rockets answer有点和清除一些混乱:
可能需要使用jQuery的$ .Callbacks的原因是多方面的:
>用户在一个函数中有很多代码,想要拆分它
>他们获取这些信息,并通过jQuery回调函数发送它,然后允许他们将他们的代码拆分成更好的可管理的部分。
所以(例如)如果你看@Rocket’s code:
var clickCallbacks = $.Callbacks(); clickCallbacks.add(function() { //one one function piece //parse and do something on the scope of `this` var c = parseInt(this.text(),10); this.text(c + 1); }); clickCallbacks.add(function(id) { //add a second non-related function piece //do something with the arguments that were passed $('span','#last').text(id); }); $('.click').click(function() { var $ele = $(this).next('div').find('[id^="clickCount"]'); clickCallbacks.fireWith($ele,[this.id]); //do two separate but related things. });