2009-12-01 6 views
3

В настоящее время у меня есть страница, которая содержит неупорядоченный список. Этот список изначально заполняется запросом моего db, причем каждый элемент списка имеет отметку времени и текст. Используя javascript и AJAX, эта страница обновляет неупорядоченный список динамически каждые 10 секунд, если новые данные вступили.jQuery - удалить элементы списка, основанные на времени

Самый простой и эффективный способ удаления элементов списка из этого неупорядоченного списка, если элементы старше 24 часы?

Моего наклонения сделать следующее:

  1. В файле JS, загружать все элементы списка в неупорядоченном списке в массив
  2. В JS позвонить, чтобы получить данные, если данные поступают обратно, добавьте эти элементы в массив, а также
  3. Каждый раз, когда вызывается функция getData(), также вызывайте функцию removeData(), которая удаляет все элементы, которые старше 24 часов.

Кроме того, у меня возникли проблемы с поиском правильного способа добавления элементов списка в массив javascript. Вот код, который я пытался для добавления всех элементов списка в массив:

var list = new Array(); 
    $(".listname").each(function (i){ 
    list.push($(this)); 
    }); 

для удаления элементов списка из массива, я ожидаю использовать:

list.pop(); 
+0

Не могли бы вы добавить предложение WHERE в SQL, отфильтровывающее элементы> 24 часа? –

+0

В начальной загрузке SQL выполняет фильтрацию в течение последних 24 часов, но затем список добавляется к новым элементам, поэтому логика времени должна управляться на стороне клиента в этой точке. –

ответ

1

Почему бы не отсортировать массив по дате (сперва сначала), а затем использовать list.shift()? Это приведет к удалению первого элемента в массиве, как описано here.

0

Ваш подход к expring элементов при запуске getData кажется звуковым. Вы должны добавить в конец массива push, но pop просто вытаскивает элементы из конца массива, что, вероятно, не соответствует правильному порядку. Массивы Javascript действуют как стеки, а не очереди. Возможно, вы захотите добавить remove в прототип массива javascript, как предлагается here

Смежные вопросы