短版本:
我正在扩展一个jQuery对象函数,该函数打算接受0-3个参数,并将它们作为第二个到第四个参数传递到
jQuery.animate
. 除此之外,我想隔离回调并在它的末尾放入另一个函数调用。
我以普通的方式扩展jQuery库,通过
jQuery.fn.newfunction = ...
jQuery.fn.expand_to_parent_container = function() {
var args = Array.prototype.slice.call(arguments);
return this.each(function(){
var parent = $(this).parent();
parent.inner_width = parent.innerWidth();
var inner_outer_differential = $(this).outerWidth(true) - $(this).width();
// store original width for reversion later
$(this).data('original_width', $(this).width());
args.unshift({ width: parent.inner_width - inner_outer_differential });
$.fn.animate.apply($(this), args );
});
}
很简单。我用的是
arguments
properties
.animate
(
API here
). 因此,目的是允许
.expand_to_parent_container
接受论点
duration, easing, callback
jQuery.speed
负责解决这个问题,但我不想直接使用它/篡改它,因为它看起来不像其他jQuery函数那样具有公共性/不推荐性,而且我宁愿将任务委托给
.设置动画
.
这是我的回归函数。
jQuery.fn.contract_to_original_size = function() {
var args = Array.prototype.slice.call(arguments);
var callback_with_width_reset = function(){
callback();
$(this).width('auto');
}
args.unshift({ width: $(this).data('original_width') });
if($(this).data('original_width')) {
$.fn.animate.apply($(this), args );
} else {
$(this).width('auto');
}
}
我把我所期望的行为表现得很清楚
var callback_with_width_reset ...
论据
或
args
.