扩展jQuery slideUp()以在动画后删除元素

时间:2013-09-18 21:22:43

标签: jquery

我希望扩展jQuery的slideUp()方法以在幻灯片动画后删除元素,并在元素被删除后应用回调

到目前为止,我有这种方法来删除元素:

$.fn.slideUpRemove = function () {
    var args = arguments;
    return this.each(function () {
        var $this = $(this);
        $.fn.slideUp.apply($this, args).promise().done(function () {
            $this.remove();
        });
    });
};

但这会在调用remove()之前运行回调,如:

$('div').slideUpRemove(function () {
    console.log($('div').length);
});

从DOM中删除元素后应用回调的最佳方法是什么?

这是 demo fiddle ,其中包含您可以使用的当前代码

编辑

我最初的想法是基本上创建slideUp()的扩展,它将以相同的方式执行,即使用相同的选项并为每个元素运行回调,但是经过一些思考我实现了每个元素的回调没有多大用处,因为没有任何元素可以设置为上下文。在这方面,在删除元素之后运行单个回调似乎是最好的方法。

1 个答案:

答案 0 :(得分:2)

如果在删除所有元素后应该调用一次处理程序:

$.fn.slideUpRemove = function (d, c) {
    var _this = this,
        duration = $.isNumeric(d) || $.isPlainObject(d) ? d : 400,
        callback = $.isFunction(c) ? c : d;

    return this.slideUp(duration).promise().done(function () {
        _this.remove();
        if ($.isFunction(callback)) callback.call();
    });
};

http://jsfiddle.net/6sKRC/