我很快写了这个jquery插件。当我传递一个$元素时它会向上滑动,但随后它会在this.empty()中断,声称这不是一个函数。问题是什么?
(function ( $ ) {
$.fn.slideUpEmpty = function(t, callback){
this.slideUp(t, function(){
this.empty();
if(callback){
callback();
}
});
}
}( jQuery ));
使用
$('#somediv').slideUpEmpty(500, function(){
});
答案 0 :(得分:4)
在slideUp
回调中,this
指的是 DOM元素,如documentation中所述:
回调不会发送任何参数,但
this
设置为动画的DOM元素。
因此,如果你想在它上面调用一个jQuery方法,你必须先将它传递给jQuery:
$(this).empty();
这会在完成动画后清空每个元素,因为对每个选定元素执行回调。
如果您只想在完成所有动画制作后将它们清空,可以使用promise:
this.slideUp(t).promise().done(function() {
this.empty(); // no `$(this)` here, `this` is already a jQuery object
});
这会在所有元素完成动画后执行仅传递给.done
一次的回调。