現在、div クラスとコンテンツに基づいてフィルターを作成しています。
次のような文字列を関数に渡すことができるかどうか疑問に思っていました: " £0.01 - £100.01
"
そして、そのdivのhtmlがこの範囲の間にあるすべてのdivを関数に表示させます
「価格」のクラスを持つdivがあり、その内容は次のとおりです。£10.30
この関数を実行して " " の文字列を渡すと、£0.01 - £100.01
以下の js で行った方法と同様にすべての div が非表示になり、div クラス "price" のコンテンツが選択した価格範囲内にある div のみが表示されます.
ここで提供するブランドフィルターを使用して、同様のことを行うことができました。
function brand(string){
var brand = string;
$('.section-link').hide();
$('.section-link').children('.brand.' + brand).parent().show();
if (brand == "All Brands"){
$('.section-link').show();
}
}
これを達成するために、一般的なアドバイスやコードは大歓迎です:)
ありがとう、サイモン
編集:
ターゲット div の例:
<div class="section-link">
<div class="price"> £56.99</div>
</div>
返信は大いに役立っています。フィルター機能はすばらしく見えますので、ご指摘いただきありがとうございます。
過去の最初の文字列を2つの値に分割し、£記号を削除するだけでなく、低い値と高い値に分割する方法を見つけようとしています
編集:
元の文字列を分割することができました:
var range = string.replace(/\u00A3/g, '');
var rangearray = range.split("-");
alert(rangearray[0]);
alert(rangearray[1]);
最終編集:
返信から、関数を作成することができましたが、完全に機能しているわけではありません:)誰かが私が間違ったことを見つけることができますか?
function price(string){
$('.section-link').hide();
var range = string.replace(/\u00A3/g, '');
var rangearray = range.split("-");
low = rangearray[0];
high = rangearray[1];
$('.section-link').children('.price').each(function() {
var divprice = $(this).text().replace(/\u00A3/g, '');
if (low <= divprice && high >= divprice){
$(this).parent().show();
}
})
}
うまくいきました。文字列にスペースがありました。最終的な関数は (面倒ですが :P)、次のとおりです。
function price(string){
$('.section-link').hide();
var range = string.replace(/\u00A3/g, '');
var rangearray = range.split("-");
low = rangearray[0].toString();
high = rangearray[1].toString();
lowmain = low.replace(/ /g,'');
highmain = high.replace(/ /g,'');
$('.section-link').children('.price').each(
function() {
var divprice = $(this).text().replace(/\u00A3/g, '');
var maindivprice = divprice.replace(/ /g,'');
if (lowmain <= maindivprice && highmain >= divprice){
$(this).parent().show();
}
})
}