jQuery动画完整参数,仅作为匿名函数而不是函数指针

时间:2013-10-01 19:06:41

标签: javascript jquery

我使用以下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);

这不是。为什么不?我想,那是一样的......

1 个答案:

答案 0 :(得分:1)

$id.remove作为函数指针(我称之为函数引用)将失去其上下文,即this值,意味着remove()赢了我不知道要处理什么样的集合。

尝试传递$.proxy($.fn.remove, $id)。这将使用remove()的上下文调用jQuery的$id方法。 $.proxy()Function.prototype.bind()的跨浏览器实现。

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