2012-02-21 34 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

相关问题