Evento jQuery: rileva le modifiche all'html / testo di un div


Answers

Puoi provare questo

$('.myDiv').bind('DOMNodeInserted DOMNodeRemoved', function() {

});

ma questo potrebbe non funzionare in Internet Explorer, non l'ho testato

Question

Ho un div che ha il suo contenuto che cambia continuamente, sia che si tratti di ajax requests jquery functions , jquery functions , blur ecc. Ecc.

C'è un modo come posso rilevare eventuali modifiche sul mio div in qualsiasi momento?

Non voglio usare nessun intervallo o valore di default controllato.

Qualcosa come questo avrebbe funzionato

$('mydiv').contentchanged() {
 alert('changed')
}



È possibile memorizzare il vecchio innerHTML del div in una variabile. Impostare un intervallo per verificare se il vecchio contenuto corrisponde al contenuto corrente. Quando questo non è vero fai qualcosa.




Il seguente codice funziona per me.

$("body").on('DOMSubtreeModified', "mydiv", function() {
    alert('changed');
});

Spero che possa aiutare qualcuno :)







Aggiungendo alcuni contenuti a un div, sia tramite jQuery o tramite de DOM-API direttamente, il valore predefinito è la funzione .appendChild() . Quello che puoi fare è sovrascrivere la funzione .appendChild() dell'oggetto corrente e implementare un osservatore al suo interno. Ora avendo sovrascritto la nostra funzione .appendChild() , dobbiamo prendere in prestito quella funzione da un altro oggetto per poter aggiungere il contenuto. Perciò chiamiamo il .appendChild() di un altro div per aggiungere finalmente il contenuto. Ofcourse, questo .removeChild() anche per .removeChild() .

var obj = document.getElementById("mydiv");
    obj.appendChild = function(node) {
        alert("changed!");

        // call the .appendChild() function of some other div
        // and pass the current (this) to let the function affect it.
        document.createElement("div").appendChild.call(this, node);
        }
    };

Qui puoi trovare un esempio naif. Puoi estenderlo da solo, credo. http://jsfiddle.net/RKLmA/31/

A proposito: questo mostra che JavaScript rispetta il principio OpenClosed. :)




Links