自定义jQuery插件

时间:2014-09-12 02:07:52

标签: javascript jquery

我很快写了这个jquery插件。当我传递一个$元素时它会向上滑动,但随后它会在this.empty()中断,声称这不是一个函数。问题是什么?

(function ( $ ) { 
 $.fn.slideUpEmpty = function(t, callback){
        this.slideUp(t, function(){
            this.empty();   
            if(callback){
                callback(); 
            }
        });
    }

}( jQuery ));

使用

$('#somediv').slideUpEmpty(500, function(){

});

1 个答案:

答案 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 一次的回调。

相关问题