如何使用find + filter返回价格范围?

时间:2013-02-04 08:54:14

标签: jquery jquery-ui jquery-slider jquery-filter

我有一个项目列表,我只需要返回价格介于“最小”和“最大”价格范围之间的项目。

以下是完整的工作示例,按类对项目进行排序,但正如您所看到的滑块不会影响价格范围,以下是完整代码:

http://jsfiddle.net/p2jwz/8/

所以,正如您所看到的,这是.find和.filter代码:

  var price = data.find('li').filter(function() {
    var price = parseFloat($(this).data('price'));
   return price >= minPrice && price <= maxPrice;
}); 

你能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:0)

您可能需要

var price = data.find('li').filter(function() {
    var price = parseFloat($(this).data('price'));
   return price >= minPrice && price <= maxPrice;
}); 

filter()函数应该返回一个布尔值,指示当前计算的元素是否应该包含在返回的集合中。如果你返回价格,那么每个没有价格=== 0的元素都将被返回,因为正整数是“真实的”,即当被认为是布尔值时评估为真。

你也有类似的东西

$(document).ready(function(){
...
    $(function(){
        ...
    });
});

即。包装了两个document.ready函数绑定。我想你可以简单地删除内部的那个。你的滑块似乎仍然以某种方式初始化,但也许这可能会导致一些故障。

你的小提琴中也发生了一个错误:

  

TypeError:sel.getElement(...)为null

答案 1 :(得分:0)

最后!我找到了解决方案,你只需要调用所有变量的函数

function showProducts($holder, data, minPrice, maxPrice) {

   var $price = data.find('li').filter(function() {
        var $price = parseInt($(this).data("price"), 10);
        return $price >= minPrice && $price <= maxPrice;
    });

            // call quicksand and assign transition parameters
        $holder.quicksand($price, {
            duration: 800,
            easing: 'easeInOutQuad'
        });
        return false;
}

希望有所帮助!