什么时候使用JQuery.Callbacks?

前端之家收集整理的这篇文章主要介绍了什么时候使用JQuery.Callbacks?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在寻找通过新的东西添加到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.
});

>你现在可以有多个回调批次的功能,你现在可以调用,当你认为有必要,而不需要在你的代码进行这么多的改变。

猜你在找的jQuery相关文章