代码之家  ›  专栏  ›  技术社区  ›  alamar

原型:Element.remove.bind(foo)无法按预期工作

  •  0
  • alamar  · 技术社区  · 15 年前

    我有一段话:

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

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

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

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

    2 回复  |  直到 13 年前
        1
  •  2
  •   PatrikAkerstrand    15 年前
    self.puff({duration: 0, queue: 'end',
        afterFinish: function () { self.remove(); }
    });
    

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

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

    self.puff({duration: 0, queue: 'end',
        afterFinish: self.remove.bind(self)
    });
    
        2
  •  0
  •   Vincent Robert    15 年前

    为什么不简单地使用:

    function(){ self.remove(); }
    

    这实际上更具可读性。