1.)jQuerylivequeryプラグインと同様の方法でHTMLの変更を追跡できます。livequeryプラグインは、すべてのjQuery DOM操作メソッドをラップし、それらのいずれかが呼び出されると、ラッパーメソッドは特別な処理を実行してから、元の関数にプロキシします。これは、両方がjQueryDOM操作メソッドの1つを使用して状態を変更することを前提とした更新/元に戻すユースケースでのみ機能します。
$.each('append', 'prepend', 'after', 'before', 'wrap', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'empty', 'remove', 'html', function(i, funcName) {
// Short-circuit if the method doesn't exist
if (!$.fn[funcName]) return;
// Save a reference to the original method
var old = $.fn[funcName];
// Create a new method
$.fn[funcName] = function() {
// Call the original method
var r = old.apply(this, arguments);
//Do something special here! Compare the stored html of the fieldset
//to the new html state and update border accordingly
// Return the original methods result
return r;
}
});
2.)この方法で追跡することができますが、少し手間がかかるようです。ユースケースとデータの管理に関する詳細情報がなければ、何かを推奨することは困難です。
3.)元のhtml()の値をフィールドセットに保存した場合は、undoの場合にも機能するようです。元にした後のhtml()の値を比較することもできます。ただし、「元に戻す」ボタンを作成している場合は、すべての変更の履歴が必要であるように思われます。ユーザーが元に戻すことがなくなると、元の状態に戻り、html( )が必要です。