JQuery добавить параметр в функцию для цикла - PullRequest
0 голосов
/ 22 марта 2011

У меня есть это:

$.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 в формате JSON из файла PHP.

Проблема в функции click (), которая должна загружать песни, связанные с этим исполнителем. Когда вызывается функция (т. Е. Кнопка нажимается), вместо передачи имени исполнителя в виде строки load (), она передает x.artists [i] .name, что, конечно, недопустимо вне функции успеха ajax.

Как мне решить эту проблему?

Спасибо, Фела

Ответы [ 3 ]

1 голос
/ 22 марта 2011

Измените свой обработчик кликов 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) ;
  }); 
}
1 голос
/ 22 марта 2011

Видя, как вы сначала устанавливаете текстовое значение - вы можете просто использовать его, если хотите:

addbutton.text(x.artists[i].name).click(function(){ load($(this).text()) })
1 голос
/ 22 марта 2011

Заменить

load(x.artists[i].name) 

с

load($(this).text()) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...