我使用以下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);
这不是。为什么不?我想,那是一样的......
答案 0 :(得分:1)
$id.remove
作为函数指针(我称之为函数引用)将失去其上下文,即this
值,意味着remove()
赢了我不知道要处理什么样的集合。
尝试传递$.proxy($.fn.remove, $id)
。这将使用remove()
的上下文调用jQuery的$id
方法。 $.proxy()
是Function.prototype.bind()
的跨浏览器实现。
通常会看到调用包含在匿名函数中以防止您遇到问题。