我添加了以下函数,以便可以向后迭代一些集合:
jQuery.reverseEach = function (object, callback, args) {
var reversed = $(object).get().reverse();
return $(reversed).each(callback, args);
};
如果您这样称呼它,效果会很好:
$.reverseEach($('#selectedSortItems option:selected'), function() {
$(this).insertAfter($(this).next());
});
但是,我想变得光滑并使其可链接,因为我喜欢我的语法糖。我在 jQuery 的原型上添加了对原始 reverseEach 函数的引用:
jQuery.prototype.reverseEach = function(callback, args) {
return jQuery.reverseEach(this, callback, args);
};
现在我可以这样称呼它:
$('#selectedSortItems option:selected').reverseEach(function () {
$(this).insertAfter($(this).next());
});
但是,我认为 jQuery.fn.extend 函数只需一步即可完成相同的操作,而无需引用原型。我尝试使用 jQuery.fn.extend 函数,如下所示:
jQuery.fn.extend({
reverseEach: function(object, callback, args) {
var reversed = $(object).get().reverse();
return $(reversed).each(callback, args);
}
});
但是,每当我以这种方式运行链接方法时,都会出现以下错误:无法获取属性“调用”的值:对象为空或未定义。
jQuery.fn.extend 方法我做错了什么?我采取了完全错误的方法,还是我只是错过了一些简单的东西?
谢谢!