我正在查看 jQuery 1.7 中添加的新内容,我发现它们现在有 jQuery.Callbacks()http://api.jquery.com/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)
但这也没有多大帮助。
我是否误解了文档?
如果这是所需的功能,那么有一些有用的适用示例。
扩展至@火箭队 回复 https://stackoverflow.com/questions/8070894/when-would-i-use-jquery-callbacks/8071883#8071883一点并消除一些混乱:
人们可能需要使用 jQuery 的原因$.Callbacks
是多方面的:
- 用户在一个函数中有很多代码并希望将其拆分
-
他们获取该信息并通过 jQuery 回调函数发送它,然后允许他们将代码分割成更好管理的部分以供使用。
所以(例如)如果你看@Rocket的代码 http://jsfiddle.net/UX5Ln/:
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.
});
- 您现在可以拥有的是函数的多个回调批次,您现在可以在认为有必要时调用它们,而无需在整个代码中进行如此多的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)