我添加了以下功能,因此我可以向后迭代某些集合:
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);
}
});
但是当我以这种方式运行链式方法时,我收到以下错误: 无法获取属性“call”的值:object为null或undefined。
我在使用jQuery.fn.extend方法做错了什么?我采取了完全错误的方法,还是我只是遗漏了一些简单的东西?
谢谢!
答案 0 :(得分:2)
您无需访问刚刚在$.fn
上定义的原型:
(function($){
$.fn.reverseEach = function(callback) {
return $(this.get().reverse()).each(callback);
};
})(jQuery);