Полезная особенность JQuery

В одном из проектов у меня возникла следующая задача: на странице имеется несколько выпадающих списков, содержимое которых подгружается с помощью ajax и зависит от выбранного значения в другом выпадающем списке (назову его «главным»). Запуск ajax запросов происходит при событии change главного выпадающего списка.

При синхронных ajax запросах, я пробегался по всем выпадающим спискам, запускал запрос и вставлял содержимое в списки. Но это вызывало некоторую задержку. При переходе на асинхронные ajax запросы, я столкнулся с проблемой: как выяснить для какого списка выполнился данный запрос?

Может быть, для этого есть другие решения, но я пришел к следующему:

Ради эксперимента, я попробовал передать в списке опций функции JQuery.ajax() новое свойство. Оказалось, что оно становится доступным в функции success у объекта, на который ссылается переменная this.

Пример:

  1.   //смена отделения
  2.   $("#order-otdel").change(function () {
  3.     var otdel = $("#order-otdel option:selected").val();
  4.     $(".employee").each(function(i){
  5.       $.ajax({
  6.         idx: i, // <--- новое свойство
  7.         type: "GET",
  8.         url: "get.php",
  9.         data: "action=get_employee&oid=" + otdel + "&jid=" + $(this).attr('job_id'),
  10.         success: function(options){
  11.           var cur = $('.employee').eq(this.idx); // <--- доступ к новому свойству
  12.           cur.empty();
  13.           cur.append(options);
  14.           //...
  15.       });
  16.     });
  17.   });
* This source code was highlighted with Source Code Highlighter.

Автор материала: levide



Опубликовал admin
1 Окт, Пятница 2010г.



Программирование для чайников.