0

これはバックボーン アプリケーション用です。Jquery html() 関数を使用してビュー テンプレートをレイアウトのどこにでも挿入しています。jQuery の html() 関数が呼び出されてチェックされるたびにイベントをトリガーできるようにしたいと考えています。ページのhtml。

それを行う方法はありますか?( App.on('html', blablabla...); のように)

ありがとうございました !

4

2 に答える 2

3

Marc B が提案したように、DOM MutationEvents は一部のブラウザー (多くはありません) で利用できます。デフォルトでは、jQuery は を使用するときにイベントを発生させませんhtmlが、次のように独自の動作を定義できます。

(function($) {
    var html_ref = $.fn.html;
    $.fn.extend({
        html : function() {
            $(document).trigger( 'html_change' );
            return html_ref.apply(this, arguments);
        }
    });
})($);

動作するはずですが、テストはしていません。メソッドと同じように使用できます.text。これで、次のように簡単に使用できます。

$(document).bind( 'html_change', function() {
    // Hurray! Html changed!
});

それがアイデアです、あなたが望むようにそれを使用してください。

于 2012-08-02T14:42:14.157 に答える
0

私の知る限り、jQueryhtml()メソッド自体はサブスクライブ可能なイベントを発生させませんが、おそらく単純なObserver patternの独自の実装をロールすることができます。私はこれを多数のプロジェクトで使用しており、疎結合モジュール全体で任意のイベント処理をカプセル化するための優れたクリーンで軽量な方法を提供します。

ただし、これは、メソッドが呼び出されるたびにプログラムで制御できることを前提としています。html()そうでない場合は、フックするコールバック関数がないため、より困難になります。

于 2012-08-02T14:39:26.630 に答える