1

ここでJSコードに2つの問題があり、助けていただければ幸いです...

  1. 価格が499ドルの製品がある場合に、「50を超える」オプションがフィルタリングリストに表示されるようにロジックを追加する必要があります。私の現在の実装では、これは機能していません。

    <li>
        <!-- over 50 product is not showing when filtering -->
        <a href="/product-three">Product Four</a><br>
        <span id="lowestPriceRange">400</span>
        <span id="highestPriceRange">400</span>
    </li>
    
    
    // Because I need to handle it here somehow but I'm stuck
    var hidePrices = {};
    hidePrices[0] = true;
    hidePrices[10] = true;
    hidePrices[20] = true;
    hidePrices[30] = true;
    hidePrices[40] = true;
    hidePrices[50] = true;
    
    $('#products').find('span').each(function(i, el){
        var key = parseInt(Math.floor($(this).html() / 10) * 10, 10);
        hidePrices[key] = false;
    });
    
    $('#filterByPrice').find('li').each(function(i, el){
        if (hidePrices[Number($(this).find('a').attr('name'))]) {
            $(this).hide();
        }
    });
    
  2. 表示したい商品が隠れています。たとえば、40ドルから50ドルのフィルタリングオプションが選択されている場合に、40ドルから60ドルの間の価格の製品を表示したいとします。

4

1 に答える 1

2

ここで私はあなたの問題を修正しました:http://jsfiddle.net/qNFWM/7/

最初の問題を修正するために、キーが400だったので、これを追加しました。

if (key > 50) key = 50;

2番目の問題を修正するために、これを変更しました。

return (minProductPrice >= minSelectedPrice && maxProductPrice <= maxSelectedPrice);

これに:

return ((minProductPrice >= minSelectedPrice &&  minProductPrice <= maxSelectedPrice) || (maxProductPrice >= minSelectedPrice &&  maxProductPrice <= maxSelectedPrice));

そのため、最小値または最大値のみが範囲内にある必要がありました。

于 2012-05-22T17:06:30.080 に答える