0

我使用以下 jQuery 动画删除了一个 dom 元素:

        var $id = $(this._id); // id of a dom element
        $id.animate({
            width:          "10vw",
            fontSize:       "0.33vw",
        }, 300, "swing", function() {
            $id.remove();
        });

这工作正常。但我想让它更短并尝试过:

        var $id = $(this._id); // id of a dom element
        $id.animate({
            width:          "10vw",
            fontSize:       "0.33vw",
        }, 300, "swing", $id.remove);

这没有。为什么不?我想,那是一样的……

4

1 回答 1

1

$id.remove作为函数指针(我称它们为函数引用)将失去其上下文,即this值,这意味着它remove()不知道要处理哪个集合。

尝试通过$.proxy($.fn.remove, $id)。这将调用 jQuery 的remove()方法,使用$id. $.proxy()是一个跨浏览器的实现Function.prototype.bind()

通常会看到调用包装在匿名函数中以防止您遇到问题。

于 2013-10-01T19:08:18.560 回答