2

我正在寻找扩展 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 中删除元素后应用回调的最佳方法是什么?

这是一个带有当前代码的演示小提琴供您使用

编辑

我最初的想法是创建基本上以相同方式执行的扩展,slideUp()即使用相同的选项并为每个元素运行回调,但是经过一番思考后,我意识到每个元素的回调没有多大用处,因为不会有任何元素可以设置为上下文。在那一点上,在元素被删除后运行单个回调似乎是最好的方法。

4

1 回答 1

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/

于 2013-09-18T21:34:55.037 回答