0

アイテムのリストがあり、価格が「最小」と「最大」の価格範囲の間にあるアイテムのみを返品する必要があります。

これは、クラスごとにアイテムを並べ替える完全に機能する例ですが、スライダーが価格帯に影響を与えないことがわかるように、完全なコードは次のとおりです。

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()関数は、現在評価されている要素を返されたコレクションに含める必要があるかどうかを示すブール値を返すことになっています。価格を返す場合、正の整数は「真」であるため、price === 0でないすべての要素が返されます。つまり、ブール値と見なされるとtrueと評価されます。

あなたも次のようなものを持っています

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

つまり、2つのdocument.ready関数バインディングをラップしました。内側のものは簡単に取り外せると思います。スライダーはまだ初期化されているようですが、これにより誤動作が発生する可能性があります。

あなたのフィドルで起こっているエラーもあります:

TypeError:sel.getElement(...)はnullです

于 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 に答える