Вы можете использовать анонимную функцию вместо указателя на callback
, так что вы можете передать в i
к callback
.
function callback(i, elem)
{
$(elem).html(data.fields[i].value);
$(elem).fadeTo('slow',1);
}
for(i=0;i<data.fields.length;i++)
{
var ident='#'+data.rID+'_'+data.fields[i].field;
$(ident).fadeTo('slow',0,function() { callback(i, this); });
}
Вместо того, чтобы ident
глобальную переменную, было бы лучше, чтобы объявить его (что делает его объем ограничен к текущей функции в), а затем использовать this
в функции обратного вызова, чтобы ссылаться на этот элемент.
Если вы не используете callback
где-нибудь еще, это может иметь смысл просто поставить его реализацию внутри анонимной функции, а не определять его отдельно и взывает к нему:
for(i=0;i<data.fields.length;i++)
{
ident='#'+data.rID+'_'+data.fields[i].field;
$(ident).fadeTo('slow',0,function() {
$(ident).html(data.fields[i].value);
$(ident).fadeTo('slow',1);
});
}
выше пример с встроенной анонимной функцией не работает, потому что ссылка на i
разделяется между обратными вызовами.
нужно сделать переменную 'ident' локальной в цикле, чтобы сохранить правильную ссылку .. или изменить ее на' $ (this) 'в обратном вызове –
Я не уверен, что вы имеете в виду Gaby, решение работало отлично написано ^^ – Matt
Кажется, из опубликованного кода «идентификатор» является глобальным или, по крайней мере, относительно глобальным. Разумеется, это действительно может быть передано функции, а также «данные». – Pointy