【发布时间】:2011-01-20 07:55:57
【问题描述】:
我使用 Jquery 创建了一个产品矩阵/选择器,它总体上运行良好,除了价格过滤器也可以工作,但与选择器有点分开。基本上,当从列表中选择一项功能时,它将显示产品,如果想要根据价格进行过滤,他们将从下拉列表中选择。问题是价格过滤器正在过滤,无论该产品是否具有该功能,价格过滤器只需要过滤功能选择器显示的产品。
我需要脚本中的帮助,以便价格过滤器仅过滤选择器显示的产品,而不显示其他产品的任何产品,如果选择了价格范围并且未显示该产品以返回类似“此根据所选的价格范围和功能,产品不可用"
HTML:
<div id="pmcontainer">
<p>Price Filter:
<select name="pricefilter" class="pricefilter">
<option value="0" selected>-- Filter by Price Range --</option>
<option value="High">High End</option>
<option value="Top">Top End</option>
<option value="Mid">Mid Range</option>
<option value="Low">Entry Level</option>
</select>
</p>
<div id="application" class="selectors">
<h4>Select by Application/Features</h4>
<ul>
<li>Outlets
<ul>
<li class="c2">2 Outlets</li>
<li class="d145">7 Outlets</li>
<li class="b8f b12r a12 ps10">8 Outlets</li>
</ul>
</li>
<li>Filtering
<ul>
<li class="a12 ps10">Active</li>
<li class="b8f b12r">Cascade</li>
<li class="c2 d145">Passive</li>
<li class="c2 d145 b8f b12r a12 ps10">Multi</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="products">
<h3>Products</h3>
<ul>
<li class="c2">Product C2</li>
<li class="d145">Product D145</li>
<li class="b8f">Product B8f</li>
<li class="b12r">Product B12r</li>
<li class="a12">Product A12</li>
<li class="ps10">Product PS10</li>
</ul>
</div>
JQuery 脚本
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
//PRODUCT SELECTOR
$('.products li').hide();
$('#pmcontainer li ul li').click(function(e){
e.preventDefault();
$('.products li').hide();
var classes = $(this).attr('class').split(' ');
$.each(classes, function() {
$('.products li.' + this).fadeIn("slow");
});
$('#pmcontainer li ul li').removeClass("current");
$(this).addClass("current");
});
//PRICE FILTER
$.pricemap = {
'0' : $([]),
'High' : $('.products .ps10'),
'Top' : $('.products .a12'),
'Mid' : $('.products .b8f, .products .b12r'),
'Low' : $('.products .c2, .products .d145')
};
$('.pricefilter').change(function() {
// hide all
$.each($.pricemap, function() { this.hide(); });
// show current
$.pricemap[$(this).val()].show();
});
});
</script>
希望这很清楚
【问题讨论】:
标签: javascript jquery html filtering