2012-02-21 36 views
0

我建立一個音樂網站我有,你點擊一個藝術家的名字的節是我使用jQuery藝術家ID發送到數據庫,並拉動其名下的所有歌曲,然後我列出了他們在頁面上的div作爲鏈接。。每個列表到DIV

我的問題是,每當我使用的.text或.VAL修改歌曲標題中的一個div,如果他有2首歌曲,那隻能說明第一首冠軍。然而,如果我使用.append,當我點擊1個藝術家的名字時,它會把他的所有歌曲都拉好,但是如果我在同一個頁面上點擊另一個藝術家的名字,它會將他的歌曲添加到之前的藝術家的歌曲下面。

只列出1首歌曲,即使是2;

$.each(data.resultData, function(key, value) { 
    $('value.SongTitles').text(value.artistName +':' + songTitle).fadeIn(); 
}); 

列表中的歌曲罰款,但沒有新的藝術家的名字後明確以前的藝術家的歌曲被點擊;

$.each(data.resultData, function(key, value) { 
    $('value.SongTitles').append(value.artistName +':' + songTitle).fadeIn(); 
}); 

回答

1

每次在填充內容之前清除內容。

$('value.SongTitles').text(''); 
$.each(data.resultData, function(key, value) { 
    $('value.SongTitles').append(value.artistName +':' + songTitle).fadeIn(); 
}); 
+0

完美的作品,謝謝;) – 2012-02-21 17:28:25

0

好了,第一個選項重寫在每次迭代「value.SongTitles」的內容,所以這就是爲什麼只有一首歌曲出現。你可以使用你的第二個選項清洗「value.SongTitles」第一,是這樣的:

$('value.SongTitles').text(""); 
$.each(data.resultData, function(key, value) { 
    $('value.SongTitles').append(value.artistName +':' + songTitle).fadeIn(); 
}); 
0

如果使用.append(),顧名思義,它將於年底其追加。嘗試.html(),它將清除所有以前的內容。

$('value.SongTitles').html(value.artistName +':' + songTitle).fadeIn(); 
0

你既可以明確的$。每個循環之前,就像這樣:

$('value.SongTitles').html(''); 

$.each(data.resultData, function(key, value) { 
    $('value.SongTitles').append(value.artistName +':' + songTitle).fadeIn(); 
}); 

或者你可以檢查的關鍵,就像這樣:

$.each(data.resultData, function(key, value) { 
     if(key == 0){ 
      $('value.SongTitles').html(''); 
     } 
     $('value.SongTitles').append(value.artistName +':' + songTitle).fadeIn(); 
}); 

注意,我喜歡使用的.html()這裏列出的理由: What is the difference between jQuery: text() and html() ?

+0

,因爲他的數據中包含藝術家名稱和歌曲名稱,我不認爲我們需要擔心轉義HTML,但對於OP來說這是一個很好的想法。 – jbabey 2012-02-21 17:34:39

相關問題