0

我有这个片段:

self.puff({duration: 0, queue: 'end',
        afterFinish: Element.remove.bindAsEventListener(self)
    });

自我是一个元素;当对它的所有影响完成后,它应该从文档中删除一个元素。

不幸的是,这不起作用,因为“element.parentNode is undefined”而失败。如果我替换Element.remove.bindAsEventListener(self)function() { self.remove(); }then 它会。我试过只是 bind() 具有相同的结果。

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

在对元素的所有效果完成后显示更简单的删除元素的方法的奖励积分。

4

2 回答 2

2
self.puff({duration: 0, queue: 'end',
    afterFinish: function () { self.remove(); }
});

这种放置方式有什么问题?你甚至自己建议。在任何情况下,您都不需要将其绑定为事件侦听器,因为它只是 bind 的 Prototype 语法糖版本,以确保函数的第一个参数始终是事件对象。由于 afterFinish 不是浏览器事件,因此没有必要。

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

self.puff({duration: 0, queue: 'end',
    afterFinish: self.remove.bind(self)
});
于 2009-05-25T15:11:13.953 回答
0

为什么不简单地使用:

function(){ self.remove(); }

这实际上更具可读性。

于 2009-05-25T15:05:48.457 回答