Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Работа со строками JQuery


Автор: RuslIT 21.7.2011, 09:36
Добрый день уважаемые форумчане
Т.к. я работаю с php+mysql и только приступил к чтению книги "Изучаем JQuery 1.3"
хотел бы спросить:
в топике http://forum.vingrad.ru/topic-309936.html поднимался вопрос о том, как менять местами строки в таблице
CruorVult рассказал о двух способах реализации
Первый способ, когда все делается на стороне клиента
По онклику нужно будет менять order (также в базе $.get запрос - данный навык имеется)
и затем сортировать по порядку и обратно рисовальщику
Допустим, есть объект:
Код

var tableRows = 
{'str1':{'rows':[{'value':'title'},{'value':'url'}],'order':1},
 'str2':{'rows':[{'value':'title2'},{'value':'url2'}],'order':2},
 'str3':{'rows':[{'value':'title3'},{'value':'url3'}],'order':3}};

Не могли бы вы показать функцию рисовальщика, функцию сортировщика

Второй способ
Отправлять get запрос, менять в базе данные, получать их и затем уже отрисовывать таблицу по JSON данным, а не по объекту tableRows

Этот способ также интересен, и хотелось бы увидеть обработку JSON данных с помощью javascript, потому что, столкнувшись с такой проблемой, пришлось на сервере формировать выходные данные, верстку и отдавать просто текст, который помещался в div, что не есть хорошо...

Заранее спасибо!




Автор: EmilRegis 21.7.2011, 10:08
сортировка:
Код

  function ASort(aInput, name){
      var aTemp = []; // временный массив
      for (var sKey in aInput){
        aTemp.push([sKey, aInput[sKey]]);
      } // ключ и его значение
      aTemp = aTemp.sort(function (){
                           return arguments[0][1][name] - arguments[1][1][name]
                         }); // сортируем временный массив
      var aOutput = []; // это мы вернем
      for (var nIndex = 0; nIndex < aTemp.length; nIndex++) {
        aOutput[aTemp[nIndex][0]] = aTemp[nIndex][1];
      }// собственно создаем выходной массив в нужном порядке
      delete aTemp; // убираем за собой
      delete aInput; // по идее исходный массив тоже нужно удалить, но далеко не всегда. можно вынести за пределы функции, но не забывать там убирать мусор
      return aOutput; 
  }
  var tableRows = {'str1':{'rows':[{'value':'title'},{'value':'url'}],'order':4},
                    'str2':{'rows':[{'value':'title2'},{'value':'url2'}],'order':2},
                    'str3':{'rows':[{'value':'title3'},{'value':'url3'}],'order':3}
                    }
   tableRows = eval(tableRows);
   var SortedHash = ASort(tableRows, 'order');
   for (var key in SortedHash){
     alert(SortedHash[key]['order']);
   }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)