2009-09-24 8 views
0

Je travaille sur un magasin de musique en ligne. Il y a des boutons comme myplaylists, mydownloads etc ... En cliquant sur ces boutons, une liste de chansons apparaît en conséquence dans une grille.
Le problème est que lorsque je clique deux fois sur les boutons rapidement la liste apparaît deux fois comme 1..4..8 1..4..8 et si je clique trois fois rapidement, il arrive trois fois.La fonction qui affiche le La liste utilise append() pour ajouter des chansons à la liste.
Ces choses n'arrivent que sur firefoxaffichage d'enregistrements en double dans firefox

Je n'arrive pas à comprendre le problème.

function fillMyMusicSongGrid 
{ 
// code to fetch data from the database 
embedSongGrid(.....);//displays the grid 
} 

embedSongGrid(.....) 
{ 
    //displays the grid 
tableContent = '...............' 
$(tableCont).appendTo('table#songList'); 
} 
+2

Pouvez-vous poster le code pour la fonction d'ajout? – rahul

+1

Je pense que vous devriez poster votre code, semble que vous avez besoin de réinitialiser une variable quelque part avant d'ajouter ... – NDM

Répondre

0

Si je devine correctement, appuyer sur ces boutons fait et Ajax appeler au serveur pour obtenir les informations, probablement en tant que tableau JSON. Vous bouclez ensuite à travers ceux-ci et append() à la div appropriée. Soit cela ou vous obtenez du HTML et juste l'ajouter.

solution simple: il suffit empty() avant de l'ajouter:

$.ajax({ 
    ... 
    success: function(data) { 
    $("#songlist").empty(); 
    for (song in data) { 
     $("#songlist").append(...); 
    } 
    } 
}); 

ou

$.ajax({ 
    ... 
    success: function(html) { 
    $("#songlist").html(html); 
    } 
}); 
+0

merci cela a vraiment travaillé – Neal

+0

mais pourquoi je ne arrive pas si je clique lentement – Neal

0

Essayez

$(tableCont).empty(); 
$(tableCont).appendTo('table#songList'); 

au lieu de

$(tableCont).appendTo('table#songList');