Estoy intentando crear un evento especial de jQuery que se desencadena cuando cambia el contenido vinculado. Mi método es verificar el contenido con un setInterval y verificar si el contenido ha cambiado desde la última vez. Si tienes algún método mejor para hacerlo, avísame. Otro problema es que parece que no puedo borrar el intervalo. De todos modos, lo que necesito es la mejor manera de verificar los cambios de contenido con el evento. Especial.Crear un evento especial de jQuery para contenido modificado
(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)
}
};
})();
y se unen de esta manera:
$('#container').bind('contentchange', function() {
console.log('contentchange triggered');
});
tengo la console.log 'contenido cambiado', pero no el console.log 'contentchange desencadenó'. Por lo tanto, es obvio que la devolución de llamada nunca se desencadena.
Acabo de utilizar Firebug para cambiar el contenido y activar el evento, para probarlo.
actualización
no creo que hice esta bastante claro, mi código no funciona realmente. Estoy buscando lo que estoy haciendo mal.
Este es el código final para cualquier persona interesada
(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);
}
};
})();
Gracias a Mushex por ayudarme.
algún motivo usted no está usando 'var' por $ esta declaración? –
¿Y tiene una ortografía consistente de 'contenido original' en la página * real *? –
Reparado. –