我试图创建时所绑定的内容触发一个jQuery特殊事件,变化。 我的方法是检查用的setInterval的内容和检查内容已经从上一次改变。 如果你有这样做的更好的方法,让我知道。 另一个问题是,我似乎无法清除的时间间隔。 无论如何,我需要的是检查与event.special内容变化的最佳方式。
(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触发”。 所以很明显,回调是永远不会触发。
我只是用萤火虫来改变内容,并触发事件,来测试它。
更新
我不认为我做了这个很清楚,我的代码不实际工作。 我在寻找我做错了什么。
下面是兴趣的人完成的代码
(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帮了我。