Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2011, 14:05
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

Сортировка и фильтрация json jQuery
Есть реляционная таблца данных. Данные я получаю в json. Эти данные отображаются на клиенсткой стороне таким образом что каждая строка стаблицы отображается в форме произвольно свестанных блоков <div> и ячеек <li>.

Есть так же в клиентском интерфейсе кнопки, которые отвечают за отбор и сортировку. Надо реализовать механизм, который позволит, скрывать/отображать часть блоков и изменять порядок следования. Признаки, по которым происходит сортировка и фильтр хранятся в значениях столбцов таблицы данных.

Вариант, каждый раз выполнять ajax запрос и получать новый json набор данных - не подходит.

Подскажите, как реализовать механизм, возможно на jQuery, для манипуляции даннми на клиентской части.

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2011, 08:28
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Не знаете как сортировать данные ?
В нете не мало инфы.

Сообщение от amt779
возможно на jQuery
Sorting elements with jQuery
jQuery Plugin - Dynamic Sorting, Paging and Filtering Product list / Portfolio.
JQuery sort()
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2011, 16:06
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

Нашел такой код
var v = 'id';
$.fn.sort = function() {  
	return this.pushStack( [].sort.apply( this, arguments ), []);  
};
  
function sortAlpha(a,b){
    return a[v] * 1 < b[v] * 1 ? 1 : -1;  
};

json.sort(sortAlpha);


Мне надо както модифицировать компаратор таким образом, чтобы он принимал 3 аргумент, ключ в json, по которому надо сравнивать объекты.

Чтобы вызо выглядил таким образом

json.sort(sortAlpha,'id');
function sortAlpha(a,b,v){
    return a[v] * 1 < b[v] * 1 ? 1 : -1;  
};


как это сделать ?
Ответить с цитированием
  #4 (permalink)  
Старый 27.07.2011, 16:17
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

function sortBy (field, rev, fn) {
	field = field || false;
	rev = rev ? rev === true ? -1 : 1 : 1;
	fn = fn || false;
	
	return function (a, b) {
					
		if (field) {
			a = a[field];
			b = b[field];
		}
					
		if (fn) {
			a = fn(a);
			b = fn(b);
		}
					
		if (a < b) { return rev * -1; }
		if (a > b) { return rev; }
					
		return false;
	}
}

field - поле по которому идёт сортировка, rev - реверсия массива, fn - функция callback для доп действий

Пример вызова:
myArray.sort(sortBy("name"));


ЗЫ: данный вариант не совсем "правильный", т.к. результирующая функция замыкается на внешней, т.е. потенциальна течёт память, но это можно исправить, если например обе функции сделать методом одного объекта, а связь между ними - через публичные свойства.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 27.07.2011 в 16:41.
Ответить с цитированием
  #5 (permalink)  
Старый 28.07.2011, 11:53
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

kobezzza,
Спасибо. Просветлело ))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка и фильтрация в селекторе amt779 jQuery 1 08.07.2011 02:09
Ajax json из jQuery 1.3 в 1.4 pro10026 jQuery 4 06.05.2011 18:47
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 11:10
не работает JSON в JQuery 1.4.1 mcpro jQuery 7 22.03.2010 16:56
Jquery, Dynatree и JSON antirek jQuery 6 01.09.2009 14:00