Jquery在for循环中添加参数

时间:2011-03-22 13:14:56

标签: jquery ajax arrays

我有这个:

$.ajax({
url: "blah.php?something",
dataType: "json"
....
success: function(x){
    for(i in x.artists) {
    addbutton.text(x.artists[i].name).click(function(){
    load(x.artists[i].name)
});
}
});

这是一个音乐播放器,这是一个建议引擎。它可以通过AJAX从PHP文件中以JSON格式加载艺术家名称,如您所见。

问题在于click()函数应该加载与该艺术家相关的歌曲。当函数被调用时(即点击按钮),而不是将艺术家的名字作为字符串传递给load(),它传递x.artists [i] .name,这当然在ajax成功函数之外是无效的。

我将如何解决这个问题?

谢谢,Fela

3 个答案:

答案 0 :(得分:1)

替换

load(x.artists[i].name) 

load($(this).text()) 

答案 1 :(得分:1)

将addButton点击处理程序更改为:

addbutton.text(x.artists[i].name).click(function(){     
   load($(this).text()) 
 });

或将for循环更改为如下(如果在单击按钮之前按钮的文本被某些其他代码更改。):

for(i in x.artists) {     
  var artistName = x.artists[i].name;
  addbutton.text(artistName ).click(function(){     
   load(artistName) ;
  }); 
}

答案 2 :(得分:1)

看看你如何设置文本值 - 如果你愿意,你可以重复使用它:

addbutton.text(x.artists[i].name).click(function(){ load($(this).text()) })