【发布时间】:2013-10-05 06:45:21
【问题描述】:
我想要一个显示一堆 div 的页面,显示的 div 将基于页面上的选择。
这里我使用了两种类型的过滤器,即 jQuery ui slider(price range) 和 checkbox
两者都可以正常工作,但我想将两者结合起来
我找不到同时结合两个过滤器的技巧
小提琴: Working Demo
HTML
<div id="slider-container">
<p>
<input type="text" id="amount" style="border: 0; color: #f6931f; font-weight: bold;" />
</p>
</div>
<ul id="filters">
<li>
<input type="checkbox" value="categorya" id="filter-categorya" />
<label for="filter-categorya">Category A</label>
</li>
<li>
<input type="checkbox" value="categoryb" id="filter-categoryb" />
<label for="filter-categoryb">Category B</label>
</li>
</ul>
<hr>
<h3>Results</h3>
<div id="computers">
<div class="system categorya categoryb" data-price="299">A, B - 299</div>
<div class="system categorya" data-price="599">A - 599</div>
<div class="system categoryb" data-price="1099">B - 1099</div>
</div>
<div id="slider-range"></div>
jQuery
$(function() {
$('#slider-container').slider({
range: true,
min: 299,
max: 1099,
values: [ 299, 1099 ],
slide: function(event, ui) {
$( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] );
var mi = ui.values[ 0 ];
var mx = ui.values[ 1 ];
filterSystem(mi, mx);
}
});
$( "#amount" ).val( "$" + $( "#slider-container" ).slider( "values", 0 ) +
" - $" + $( "#slider-container" ).slider( "values", 1 ) );
});
function filterSystem(minPrice, maxPrice) {
$("#computers div.system").hide().filter(function() {
var price = parseInt($(this).data("price"), 10);
return price >= minPrice && price <= maxPrice;
}).show();
}
$("#filters :checkbox").click(function() {
$("#computers div.system").hide();
$("#filters :checkbox:checked").each(function() {
$("." + $(this).val()).show();
});
});
谁能帮我把这两个过滤器结合起来。
在此先感谢,对不起我的英语不好
【问题讨论】:
标签: jquery jquery-ui jquery-plugins checkbox uislider