2012-08-02 63 views
0

這是一個骨幹應用程序, 我使用jquery html()函數將視圖模板插入到佈局中,我希望每次調用jQuery的html()函數時都能觸發一個事件檢查頁面的html。插入html時是否有觸發事件的方法?

有沒有辦法做到這一點? (Like App.on('html',blablabla ...);)

謝謝!

+2

有DOM MutationEvents,但它們沒有廣泛支持:https://developer.mozilla.org/en/DOM_Events – 2012-08-02 14:35:04

回答

3

正如Marc B所建議的,DOM MutationEvents在某些瀏覽器上可用(不是很多)。默認情況下使用html jQuery的時候不會觸發任何事件,但你可以定義自己的行爲,對於這一點,例如:

(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! 
}); 

這就是想法,如你所願使用它。

0

AFAIK,jQuery html()方法本身不觸發任何可訂閱的事件,但您可能會自己實現一個簡單的Observer pattern。我在大量的項目中使用它,它提供了一個很好的,乾淨的,輕量級的方式來封裝鬆散耦合模塊中的任意事件處理。

然而,這是假設你有過每次html()方法被調用時編程控制 - 如果不是,那麼這將是更困難,因爲沒有回調函數掛接到。

相關問題