我試圖創建一個jQuery特殊事件,當綁定的內容發生更改時觸發。我的方法是使用setInterval檢查內容,並檢查內容是否從上次更改過。如果您有更好的方法,請告訴我。另一個問題是,我似乎無法清除間隔。無論如何,我需要的是使用event.special檢查內容更改的最佳方法。爲內容更改創建一個jQuery特殊事件
(function(){
var interval;
jQuery.event.special.contentchange = {
setup: function(data, namespaces) {
var $this = $(this);
var $originalContent = $this.text();
interval = setInterval(function(){
if($originalContent != $this.text()) {
console.log('content changed');
$originalContent = $this.text();
jQuery.event.special.contentchange.handler();
}
},500);
},
teardown: function(namespaces){
clearInterval(interval);
},
handler: function(namespaces) {
jQuery.event.handle.apply(this, arguments)
}
};
})();
,並將其綁定這樣的:
$('#container').bind('contentchange', function() {
console.log('contentchange triggered');
});
我得到的console.log '內容變',但不是的console.log 'contentchange觸發'。所以很顯然,回調從來沒有被觸發。
我只是使用Firebug來改變內容並觸發事件來測試它。
更新
我不認爲我足夠清楚,我的代碼實際上不工作。我正在尋找我做錯了什麼。
這裏是有興趣的人
(function(){
var interval;
jQuery.event.special.contentchange = {
setup: function(){
var self = this,
$this = $(this),
$originalContent = $this.text();
interval = setInterval(function(){
if($originalContent != $this.text()) {
$originalContent = $this.text();
jQuery.event.handle.call(self, {type:'contentchange'});
}
},100);
},
teardown: function(){
clearInterval(interval);
}
};
})();
感謝Mushex幫我出的成品代碼。
你不使用風險價值「爲$此聲明的任何原因? – 2009-09-19 22:28:47
你在* real *頁面中是否有'orginalContent'的一致拼寫? – 2009-09-19 22:29:43
固定。 – 2009-09-19 22:36:35