Frage

Ich habe dieses Snippet:

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

Selbst ist ein Element; es soll ein Element aus dem Dokument entfernen, wenn alle Effekte auf sie abgeschlossen sind.

Leider funktioniert das nicht, andernfalls mit „element.parentNode ist nicht definiert“. Wenn ich Element.remove.bindAsEventListener(self) mit function() { self.remove(); } ersetzen, dann wäre es. Ich habe versucht, binden nur () mit den gleichen Ergebnissen.

Die Frage ist: warum es nicht funktioniert, und wie soll ich bind ()

Bonuspunkte für die Ansicht einen einfacheren Weg, um ein Element zu entfernen, nachdem alle Effekte auf sie fertig sind.

War es hilfreich?

Lösung

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

Was ist falsch mit dieser Art, es auszudrücken? Sie behaupten sogar, es selbst. Auf jeden Fall brauchen Sie es nicht als Ereignis-Listener zu binden, da es nur ein Prototyp syntaktischen Zucker Version von bind, um sicherzustellen, dass der erste Parameter an die Funktion ist immer das Ereignis-Objekt ist. Da afterFinish kein Browser-Ereignis ist, es ist nicht notwendig.

Schließlich binden Sie die falsche Funktion. Sie sollten die Methode Instanz binden self :

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

Andere Tipps

Warum nicht einfach verwenden:

function(){ self.remove(); }

Dies ist eigentlich besser lesbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top