我有这个:
$.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
答案 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()) })