Sto provando a creare un evento speciale jQuery che si attiva quando il contenuto associato viene modificato. Il mio metodo è controllare il contenuto con un setInterval e controllare se il contenuto è cambiato dall'ultima volta. Se hai qualche metodo migliore per farlo, fammi sapere. Un altro problema è che non riesco a cancellare l'intervallo. Ad ogni modo, quello di cui ho bisogno è il modo migliore per verificare le modifiche del contenuto con event.special.Creare un evento speciale jQuery per il contenuto modificato
(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)
}
};
})();
e associarlo in questo modo:
$('#container').bind('contentchange', function() {
console.log('contentchange triggered');
});
ho la console.log 'contenuti cambiato', ma non il console.log 'contentchange attivato'. Quindi è ovvio che il callback non viene mai attivato.
mi basta usare Firebug per modificare il contenuto e per attivare l'evento, di provarlo.
Aggiornamento
non credo che ho fatto questo abbastanza chiaro, il mio codice in realtà non funziona. Sto cercando quello che sto facendo male.
Ecco il codice finito per chiunque sia interessato
(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);
}
};
})();
Grazie a Mushex per avermi aiutato.
Qual è il motivo non lo si utilizza 'var' per $ questa dichiarazione? –
E hai ortografia coerente di 'orginalContent' nella pagina * real *? –
corretto. –