2011-06-22 26 views
1

DOMNodeInsertedイベントを介して要素にドキュメントを挿入するときに、イベントリスナー関数を適用します。要素は急速に連続して挿入されますが、要素挿入のバッチごとに1回だけ関数を実行したいと思います。一連のDOMNodeInsertedイベントをJavaScriptの単一イベントとして処理する

イベントが終了した後にこの変数をリセットするために、リスナーによって呼び出された関数が実際にアクションを実行する必要があるかどうかを示すために、クロージャ内でグローバルスコープのブール変数を使用しようとしました。

jQueryはこのプロジェクト内の他の機能に使用されているため、ここではオープンオプションとして考えていますが、抽象化はこの場合非常に有用ではないかもしれません。私は.one()メソッドに気付きました。おそらく、イベントハンドラをバインドすることは可能です。イベントハンドラは、一度起動されるとすぐにキャンセルされ、その後タイムアウトで再確立されます。

提案?

答えて

2

あなたは(.one()を使用して、タイムアウト後に再接続)提案された方法を使用することができますが、それは(機能のバーストは、ハンドラを呼び出す前に終了を呼び出すまで待機し、または最初に1度だけハンドラを呼び出すdebounceように聞こえます関数呼び出しのバッチの)は、あなたが探しているものです。あなたはbebounceのJohn Hann's implmentationを試してみるか、Ben AlmanのjQuery debounce pluginを試してみてください。

関連する問題