我有这个片段:
self.puff({duration: 0, queue: 'end',
afterFinish: Element.remove.bindAsEventListener(self)
});
自我是一个元素;当它上面的所有效果都完成后,它应该从文档中删除一个元素。
不幸的是,这不起作用,因“element.parentNode未定义”而失败。
如果我将Element.remove.bindAsEventListener(self)
替换为function() { self.remove(); }
,那么它会。我尝试使用相同结果的bind()。
问题是:为什么它不起作用,我应该如何使用bind()?
奖励点用于显示在完成所有效果后删除元素的更简单方法。
答案 0 :(得分:2)
self.puff({duration: 0, queue: 'end',
afterFinish: function () { self.remove(); }
});
这种放置方式有什么问题?你甚至自己建议。在任何情况下,您都不需要将其绑定为事件侦听器,因为它只是绑定的Prototype合成糖版本,以确保函数的第一个参数始终是事件对象。由于afterFinish不是浏览器事件,因此没有必要。
最后,您绑定了错误的函数。您应该绑定 self 的方法实例:
self.puff({duration: 0, queue: 'end',
afterFinish: self.remove.bind(self)
});
答案 1 :(得分:0)
为什么不简单地使用:
function(){ self.remove(); }
这实际上更具可读性。