2010-11-04 16 views
0

J'essaye d'utiliser le contenu d'ajout pour faire un flux en direct avec jQuery mais mon problème est qu'il ajoute plus de contenu, même s'il y a déjà un "< li> </li>" c'est exactement le même que celui qui est déjà là ...Ajouter uniquement si le contenu est nouveau

Mon code actuel: http://pastebin.com/yEtSsg90

si quelqu'un pouvait poster un exemple de code avec des commentaires :)

+0

bien, n'envoyez pas deux fois les mêmes données. –

+0

Ne serait-il pas plus facile d'ajouter une vérification à 'loadem.php' qui ne retourne que du nouveau contenu? – Alec

Répondre

1

Essayez ce à partir juste après le commentaire sur la ligne 12:

repeat = false; 
jQuery('ul#feed li').each(function() { 
    if($(this).text() == data) 
    { 
     repeat = true; 
    } 
}); 

if(!repeat) 
{ 
    jQuery('ul#feed').prepend('<li>' + data + '</li>'); 
} 

il cherche de li #feed existants qui ont le même texte que les données. S'il en existe un, ignorez l'ajout des données; sinon, ajoutez-le comme d'habitude.

+0

Nice, exactement ce que je cherchais! Merci beaucoup! –

0

Vous avez besoin pour garder une trace des entrées que vous avez déjà ajoutées. Par exemple, si chaque entrée a un numéro d'identification, vous pouvez conserver une liste de tous les identifiants ajoutés, ou simplement l'identifiant le plus élevé, ils sont séquentiels.

Vous pouvez également le faire côté serveur. Avec la requête, vous pouvez passer l'ID de l'ID le plus élevé que vous avez ajouté pour obtenir uniquement de nouvelles entrées. Si vous avez un horodatage pour chaque entrée, vous pouvez également l'utiliser pour gérer le filtrage.

0
var exists = false, 
    insertation = 'feedText..'; 

$('li').text(function(index,text) { 
    if(text == insertation) exists = true; 
}); 

if(!exists) //perform the appending