0

私はこのスニペットを持っています:

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

自己は要素です。要素に対するすべての効果が完了すると、要素をドキュメントから削除することになっています。

残念ながら、これは機能せず、「element.parentNode is undefined」で失敗します。に置き換えるElement.remove.bindAsEventListener(self)function() { self.remove(); }、そうなるでしょう。同じ結果で bind() だけを試しました。

問題は、なぜそれが機能しないのか、bind() をどのように使用すればよいのかということです。

要素へのすべての効果が完了した後に要素を削除する簡単な方法を示すためのボーナスポイント。

4

2 に答える 2

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

この置き方の何が問題なのですか?あなたはそれを自分で提案することさえあります。いずれにせよ、関数への最初のパラメーターが常にイベント オブジェクトであることを保証するバインドのプロトタイプ シンタティック シュガー バージョンにすぎないため、イベント リスナーとしてバインドする必要はありません。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 に答える