2011-03-19 61 views
1

我有这样的代码:jQuery的反向排序

$(document).ready(function() { 
     ofertas_sort = function(sort_key) { 
      // array of offer divs 
      var ofertas = $('.infoferta'); 

      // the div classname corresponding to the key by which 
      // we are sorting 
      var sort_key_sel = 'div.' + sort_key; 

      // in large lists it'd be more efficient to calculate 
      // this data pre-sort, but for this instance it's fine 
      ofertas.sort(function(a, b) { 
       return parseInt($(sort_key_sel, a).attr('data-value')) - 
        parseInt($(sort_key_sel, b).attr('data-value')); 
      }); 

      // re-fill the container with the newly-sorted divs 
      $('#ofertas_container').empty().append(ofertas); 
     }; 

     $('a').click(function() { 
      ofertas_sort($(this).attr('data-key')); 
     }); 
    }); 

我需要做反向..但是,当我把线路是这样的:

ofertas.reverse(function(i, e) { 
      alert(i); 
      alert(e); 
     }); 

它显示了这个消息

Uncaught TypeError: Object [object Object] has no method 'reverse' 
+0

请说明如何以及在何处定义方法'reverse' – 2011-03-19 02:52:40

回答

1

ofertas不是数组 - 它是一个jQuery对象 - 并且缺少称为reverse的这种方法(请参阅jQuery API)。同样,我对发布的示例代码起作用感到惊讶,因为sort正在调用ofertas

要“逆向排序”只是-1乘以比较(排序函数)的结果反转减法运算的操作数(这实际上是在这里同样的事情)。

快乐编码。

1

ofertas是一个jQuery对象,但是您可以使用toArray()方法将其转换为数组。从那里你可以调用诸如reverse之类的数组函数。