Полезная особенность 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);
-
//...
-
});
-
});
-
});
Рекомендуем почитать