Полезная особенность JQuery
В одном из проектов у меня возникла следующая задача: на странице имеется несколько выпадающих списков, содержимое которых подгружается с помощью ajax и зависит от выбранного значения в другом выпадающем списке (назову его «главным»). Запуск ajax запросов происходит при событии change главного выпадающего списка.
При синхронных ajax запросах, я пробегался по всем выпадающим спискам, запускал запрос и вставлял содержимое в списки. Но это вызывало некоторую задержку. При переходе на асинхронные ajax запросы, я столкнулся с проблемой: как выяснить для какого списка выполнился данный запрос?
Может быть, для этого есть другие решения, но я пришел к следующему:
Ради эксперимента, я попробовал передать в списке опций функции JQuery.ajax() новое свойство. Оказалось, что оно становится доступным в функции success у объекта, на который ссылается переменная this.
Пример:
-
//смена отделения -
$("#order-otdel").change(function () { -
var otdel = $("#order-otdel option:selected").val(); -
$(".employee").each(function(i){ -
$.ajax({ -
idx: i, // <--- новое свойство -
type: "GET", -
url: "get.php", -
data: "action=get_employee&oid=" + otdel + "&jid=" + $(this).attr('job_id'), -
success: function(options){ -
var cur = $('.employee').eq(this.idx); // <--- доступ к новому свойству -
cur.empty(); -
cur.append(options); -
//... -
}); -
}); -
});
Рекомендуем почитать

