2012-03-16 16 views
4

DOMが追加された回数を数える方法はありますか?あなたはそれが呼び出された回数を確認するためにいつでも$.appendCountにアクセスすることができ、今DOMが操作/追加された回数を確認する

var _origAppend = $.fn.append; 
$.appendCount = 0; 

$.fn.append = function() { 
    $.appendCount++; 
    return _origAppend.apply(this, arguments); 
}; 

:あなたは.append()後striclyなら

+2

、それがどのようなアクションが含まれていますか?何か特別な理由で? – Joseph

+0

私は、.append()または.html()がDOM内で何かを追加/変更するたびに、申し訳ありませんが、私はバックボーンを使用しており、私はそれに起因するメモリリークがあると思います100%ではない – West55

+0

あなたが単にページのプロファイリング/テストを行っているのであれば、firebugやdragonflyのようなデバッガを使うのではないでしょうか。そういうわけで、あなたはスクリプトが何をしているのか、それがいつこれらのことをするのかを見ます。あなたが使用するライブラリのすべてのDOM操作メソッドを拡張する時間がない限り、また、操作は追加だけに限定されず、要素の移動、削除、テキストの追加、ボックスやイベントアタッチメントの移動などもあります。 – Joseph

答えて

5

は、あなただけのように、それにパッチを適用することができます。しかし、DOMを操作できる多くの関数があることに注意してください。代わりにjQuery.fn.domManipにパッチを当てるほうが、もっと巧妙な考えかもしれません。このメソッドは、基本的にはdomの操作で内部的に呼び出されます(名前のため疑わしいかもしれません)

+1

** + 1 **最初の行 '.appends()' => '.append()'にタイプミスがあります。そして最後の行でカンマを忘れてしまった。 '_origAppend.apply(この引数);' => '_origAppend.apply(this、arguments);' – gdoron

+0

whoopa、それを修正しました。 – jAndy

+1

彼の[コメント](http://stackoverflow.com/questions/9730555/determine-number-of-times-the-dom-was-manipulated-appended/9730578#comment12373413_9730555)それは単に '.append()'ではない – gdoron

3

mutation eventsを使用できます。
パフォーマンスに大きな影響があることに注意してください。

突然変異イベントモジュールは、attrやテキストの変更を含む文書の構造の変更を通知できるように設計されています。列挙された突然変異事象のいずれも、取り消し可能と指定されていないことに留意されたい。これは、関連するイベントの取り消しによってドキュメントへの変更が発生した場合や発生しなかった場合に、ドキュメントの変更を引き起こす既存のDOMインターフェイスを使用することは非常に難しいという事実に起因します。これは依然として望ましい機能ですが、トランザクションをDOMに追加するまで残される方が良いと判断されました。 * * "操作" によって

Spec

関連する問題