Jquery: remplace le contenu uniquement si le nouveau contenu est différent

J’ai un fichier php qui s’appelle toutes les X secondes en ajax pour actualiser un contenu. Ce fichier php retourne un fichier js qui doit changer le contenu HTML d’un div avec un effet.

Mais je voudrais changer ce contenu uniquement si le nouveau est différent! Sinon, j’ai une div qui se rafraîchit avec l’effet même si c’est le même contenu!

J’ai testé avec ce code:

if ($('#mydiv').html()!=data_insertion) $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)}); 

Mais ce code n’est pas inter-navigateur … En effet, ma variable data_insertion contient du contenu HTML. Et chaque navigateur l’insère en changeant l’ordre d’atsortingbution, etc. C’est pourquoi, $ (‘# mydiv’). Html () n’est jamais égal à data_insertion.

Vous pouvez utiliser un cache local du résultat, attaché à l’élément. Dans votre rappel ajax, faites quelque chose comme:

 if (jQuery.data($('#mydiv')[0], 'last_data_insertion') != data_insertion) { // Update DOM content $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)}); // Reset the local cache jQuery.data($('#mydiv')[0], 'last_data_insertion', data_insertion); }