2010-04-11 7 views
1

Это своего рода простой вопрос, однако, я, кажется, не понять, как это сделать:Jquery .Filter Функция Вопрос

I've получил ползунок фильтрации некоторые вещи

$("#price").slider(
    { 
    range: true, 
    step: 5, 
    change: function(e,ui) { 
    $('total').filter(function(index) { 
     return (($("#price").slider("values", 0)) <= $(this).text() <= 
        ($("#price").slider("values", 1))); 
    }).parents('div.item').hide(); 
    } 
}); 

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

$('total').filter(function(index) { 
    var matches = (($("#price").slider("values", 0)) <= $(this).text() <= 
        ($("#price").slider("values", 1))); 
    return matches; 
}.myFunction(matches){ 
//do some stuff here with matched elements 
} 

Это не правильно, ваша помощь очень ценится.

+0

Какие элементы вы хотите? Те, которые соответствуют фильтру, или те, которые этого не сделали? – SLaks

+0

@Matias - Обязательно принимайте ответы, нажав галочку, кроме ответа, который разрешил вашу проблему ... это помогает следующему человеку с той же проблемой найти ответ. –

ответ

2

Обновление для комментариев: Вы можете сделать это с помощью .map(), как это:

change: function(e,ui) { 
    var self = $(this); 
    var indexes = []; 
    $('.total').filter(function(index) { 
     var txt = $(this).text(); 
     if (self.slider("values", 0) <= txt && txt <= self.slider("values", 1)) 
     { 
     indexes.push(index); 
     return true; 
     } 
    }).parents('div.item').hide(); 
    //do something with indexes array 
} 
+0

Ну, не совсем, фильтр работал нормально (я просто старался простить это, поэтому моя ошибка в примере), проблема по-прежнему похожа на массив с числами, которые я отфильтровал. – Matias

+0

@Matias - Вам нужен массив значений, которые соответствуют или не соответствуют текущему диапазону ползунка? –

+0

theo, который соответствует, спасибо Nick! – Matias

0

Вот полный код, я работаю над:

$("#price").slider(
      { 
      range: true, 
      step: 5, 
      change: function(e,ui) { 
      $('span.the_total').filter(function(index) { 
        return (($("#price").slider("values", 0)) <= $(this).text() <= ($("#price").slider("values", 1))); 
      }).parents('div.item_hotel').show(); 

      $('span.the_total').filter(function(index) { 
        return (($("#price").slider("values", 0)) > $(this).text()); 
      }).parents('div.item_hotel').hide(); 

      $('span.the_total').filter(function(index) { 
        return (($("#price").slider("values", 1)) < $(this).text()); 
      }).parents('div.item_hotel').hide(); 

      }}); 
Смежные вопросы