Javascript 原型:Element.remove.bind(foo)不';I don’我没有按预期工作

Javascript 原型:Element.remove.bind(foo)不';I don’我没有按预期工作,javascript,prototypejs,bind,Javascript,Prototypejs,Bind,我有一段话: self.puff({duration: 0, queue: 'end', afterFinish: Element.remove.bindAsEventListener(self) }); 自我是一个要素;它应该在完成对文档的所有影响后从文档中删除一个元素 不幸的是,这不起作用,因为“element.parentNode未定义”失败。 如果我将Element.remove.bindAsEventListener(self)替换为function(){se

我有一段话:

self.puff({duration: 0, queue: 'end',
        afterFinish: Element.remove.bindAsEventListener(self)
    });
自我是一个要素;它应该在完成对文档的所有影响后从文档中删除一个元素

不幸的是,这不起作用,因为“element.parentNode未定义”失败。 如果我将
Element.remove.bindAsEventListener(self)
替换为
function(){self.remove();}
,那么它会。我尝试过使用相同的结果绑定()

问题是:为什么它不能工作,我应该如何使用bind()

在元素上的所有效果完成后,显示更容易移除元素的方法的奖励点数。

为什么不简单地使用:

function(){ self.remove(); }
这实际上更具可读性

self.puff({duration: 0, queue: 'end',
    afterFinish: function () { self.remove(); }
});
这种说法有什么不对?你甚至自己建议。在任何情况下,都不需要将其绑定为事件侦听器,因为它只是bind的原型版本,以确保函数的第一个参数始终是事件对象。因为afterFinish不是浏览器事件,所以它是不必要的

最后,您绑定了不正确的函数。您应该绑定self的方法实例:


我做到了,但我想知道为什么bind()会失败
元素。remove.bind(self)
在我看来更好,只要它能工作。哦!我想我必须使用Element.remove.curry()而不是bind(),我想我会继续使用
function(){self.remove();}
self.puff({duration: 0, queue: 'end',
    afterFinish: self.remove.bind(self)
});