прототип: Element.remove.bind (foo) не работает должным образом - PullRequest
0 голосов
/ 25 мая 2009

У меня есть этот фрагмент:

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

Я - это элемент; предполагается, что элемент будет удален из документа, когда все эффекты для него завершены.

К сожалению, это не сработает, потому что "element.parentNode is undefined". Если бы я заменил Element.remove.bindAsEventListener(self) на function() { self.remove(); }, тогда это произойдет. Я пытался просто bind () с теми же результатами.

Вопрос в том, почему он не работает и как мне использовать bind ()?

Бонусные баллы за показ более простого способа удаления элемента после того, как все эффекты на нем сделаны.

Ответы [ 2 ]

2 голосов
/ 25 мая 2009
self.puff({duration: 0, queue: 'end',
    afterFinish: function () { self.remove(); }
});

Что не так с этим способом? Вы даже сами предлагаете это. В любом случае вам не нужно связывать его как прослушиватель событий, поскольку это всего лишь синтетическая версия связывания Prototype для обеспечения того, чтобы первым параметром функции всегда был объект-событие. Поскольку afterFinish не является событием браузера, оно не нужно.

Наконец, вы связываете неверную функцию. Вам следует привязать экземпляр метода self :

self.puff({duration: 0, queue: 'end',
    afterFinish: self.remove.bind(self)
});
0 голосов
/ 25 мая 2009

Почему бы просто не использовать:

function(){ self.remove(); }

Это на самом деле более читабельно.

...