0

我有一个项目列表,我只需要返回价格在“min”和“max”价格范围之间的项目。

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

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

你能告诉我我做错了什么吗?

4

2 回答 2

0

你可能需要

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

filter() 函数应该返回一个布尔值,指示当前评估的元素是否应包含在返回的集合中。如果您返回价格,则将返回每个不具有价格 === 0 的元素,因为正整数是“真实的”,即当被视为布尔值时评估为 true。

你也有一些看起来像

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

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

您的小提琴中也发生了错误:

类型错误:sel.getElement(...) 为空

于 2013-02-04T08:58:54.943 回答
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;
}

希望有帮助!

于 2013-02-04T15:52:15.280 回答