Как отфильтровать сотни записей, используя ползунки jquery, не заходя на сервер каждый раз? - PullRequest
1 голос
/ 09 марта 2011

У меня есть требование, как я должен показать 1000 записей в JSP. И я должен отфильтровать записи с помощью Jquery Slider.Now я отправляю запрос на сервер для каждого перемещения. Есть ли простой способ фильтрациибез отправки запроса на сервер.

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Вы можете сохранить свойства записи в DOM.Например, вы можете сделать следующее:

//assuming you get your results via ajax/JSON
search_filter = new Array();
$.ajax({
   success: function(json) {
      for (var key in json) {
         search_filter.push(json[key]) //this loop might not be necessary depending on how json looks like
      }
   }
});

//We define jRecords globally for performance gains, however, updates to the table are not registered
var jRecords = $('table#relevant_table>tr');
$('input#search').bind('change', function() {
   var jExceptions = $;
   var this_value = $(this).val();
   var size = jRecords.size();
   for (var i=0; i<size; i++) {
      if (search_filter[i].relevant_value > this_value) {
         jExceptions.add(jRecords.eq(i));
      };
   }

   jRecords.not(jExceptions).hide();
   jExceptions.show();
})

Это показывает, как вы могли бы использовать DOM для хранения фильтра и использовать это для фильтрации записей через js.Я попытался избежать большого количества селекторов и отдельных действий, чтобы повысить производительность (поскольку вы работаете с тысячами строк, это может быть медленным), и вместо этого выбрал поиск строк вместе и их обновление за один раз.Однако этот пример может все еще не быть оптимизирован для вашей конкретной задачи.Я также не проверял, работает ли пример на самом деле, но я вполне уверен, что он будет работать (хотя и ожидаю несколько ошибок синтаксиса).

0 голосов
/ 09 марта 2011

Чтобы сделать это без обратной передачи на сервер, вам нужно загрузить все данные, которые вам нужны, в клиенте.Это, конечно, первоначально займет много времени и может стать проблемой для клиента.Я думаю, что для пары тысяч записей это будет хорошо.Загрузите их на клиент, используя ajax, чтобы браузер оставался отзывчивым.Загрузите все данные, даже если вам изначально нужно показать их часть.В зависимости от выбора слайдера показывать более или менее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...