這是一個骨幹應用程序, 我使用jquery html()函數將視圖模板插入到佈局中,我希望每次調用jQuery的html()函數時都能觸發一個事件檢查頁面的html。插入html時是否有觸發事件的方法?
有沒有辦法做到這一點? (Like App.on('html',blablabla ...);)
謝謝!
這是一個骨幹應用程序, 我使用jquery html()函數將視圖模板插入到佈局中,我希望每次調用jQuery的html()函數時都能觸發一個事件檢查頁面的html。插入html時是否有觸發事件的方法?
有沒有辦法做到這一點? (Like App.on('html',blablabla ...);)
謝謝!
正如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!
});
這就是想法,如你所願使用它。
AFAIK,jQuery html()
方法本身不觸發任何可訂閱的事件,但您可能會自己實現一個簡單的Observer pattern。我在大量的項目中使用它,它提供了一個很好的,乾淨的,輕量級的方式來封裝鬆散耦合模塊中的任意事件處理。
然而,這是假設你有過每次html()
方法被調用時編程控制 - 如果不是,那麼這將是更困難,因爲沒有回調函數掛接到。
有DOM MutationEvents,但它們沒有廣泛支持:https://developer.mozilla.org/en/DOM_Events – 2012-08-02 14:35:04