...
一つは、あなたがDOM(var snap = document.body
)のスナップショットを取ることができ、後からのDOMの100msにそれを比較し、再び体内にsnap
をリセットします。私はあなたにそれらを比較する方法を創造的にさせるでしょう:反復は一般的な答えのようです。それはかなりではありません。
他のオプションは、アプリケーションで要素を追加/削除する関数を作成する際に特別な機能を持たせることです。この関数は、追加または破棄する要素だけを反復して、一致を探します。
/* Shim matchesSelector */
if (!Element.prototype.matchesSelector) {
Element.prototype.matchesSelector =
Element.prototype.matches ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.oMatchesSelector;
}
function addingToDom(elm){
/* Whichever method you want to use to map selectors to functions */
var callbacks = array(['.class', fn-reference1], ['#id', fn-reference2], ['div', fn-reference3]);
/* go through all the elements you're adding */
for (var i = 0; i<elm.length; ++i){
/* go through all the selectors you're matching against */
for (var k = 0; k<callbacks.length ++k){
if(elm[i].matchesSelector(callbacks[k][0])){
/* call function with element passed as parameter */
callbacks[k][1](elm[i]);
}
}
}
}
これは完璧ではないかもしれませんが、どこに向かうべきかを理解しておく必要があります。引数として追加したばかりの要素を渡して、この関数(addingToDom)を呼び出します。要素を削除する(または同じ関数ですが、コールバックの別の配列を条件付けする)同様の関数を作成します。
これは私がいくつかのアイデアをテストするために使用している現在の(大きくて乱雑な)コードの外挿です。私はマッチセレクタをこのシムと同じくらい前までテストしました。それは素晴らしいことです!
私は、要素が追加されたときに呼び出され、パラメータとして渡される関数として設定できる何らかの種類のパラメータを持つ可能性を考慮しましたが、考慮しませんでした。しかし、それはおそらく遠くに取り込まれます。
はい、すべての使用例をカバーするわけではありません。 – Christophe
これを行うためのライブラリを探している場合(私はあなたのユースケースがどのようなものかわからないので)、jQueryを考えましたか? – honyovk