Вы можете использовать анонимную функцию вместо указателя на 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
где-либо еще, возможно, имеет смысл просто поместить ее реализацию в анонимную функцию, а не определять ее отдельно и вызывать ее:
<del>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);
});
}
</del>
Приведенный выше пример со встроенной анонимной функцией не работает, поскольку ссылка на i
является общей для обратных вызовов.