2010-04-11 78 views
1

這是怎樣的一個簡單的問題,但是,我似乎沒有搞清楚如何做到這一點:jQuery的.Filter功能問題

從來就得到了一個滑塊過濾一些東西

$("#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 2010-04-11 19:11:18

+0

@Matias - 確保通過點擊除了解決問題的答案之外的複選標記來接受答案......這有助於具有相同問題的下一個人找到答案。 – 2010-04-17 11:36:00

回答

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 2010-04-11 19:29:23

+0

@Matias - 你想要一個匹配的數組,或不匹配滑塊的當前範圍? – 2010-04-11 19:31:13

+0

這些匹配,謝謝尼克! – Matias 2010-04-11 19:32:28

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(); 

      }});