JqueryFilter函数问题

时间:2010-04-11 19:08:33

标签: 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 
}

这是不正确的,非常感谢您的帮助。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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();

            }});