我正在构建一个简单的分面过滤器,以帮助用户找到合适的公寓。几天前,我得到了一个基本的滑块,用平方英尺过滤出公寓。接下来的部分是让复选框工作,我发布到SO here并从icecub获得了一些帮助。从那时起,我一直致力于让它们串联工作(例如,检查2间卧室并将滑块滑动到800平方英尺,通过两个变量过滤公寓)。昨天有这个工作。
我遇到的唯一问题是现在滑块仅在选中其中一个复选框时才有效。如果同时选中了两个或没有,则滑块不起作用。我不确定我的逻辑究竟存在缺陷。
这是一个小提琴https://jsfiddle.net/baskinco/mwqkztn8/
这里是JS
// FUNCTIONS
//make slider textbox equal to slider value
function printValue(sliderID, textbox) {
var x = document.getElementById(textbox);
var y = document.getElementById(sliderID);
x.value = y.value;
}
//get bdrm and slider values
function getValues() {
var bdrm1 = false;
var bdrm2 = false;
var sliderValue;
if($("#1bdrm").is(':checked')){
bdrm1 = true;
}
if ($("#2bdrm").is(':checked')){
bdrm2 = true;
}
sliderValue = $("#rangeValue").val();
runFilter(bdrm1, bdrm2, sliderValue);
}
function runFilter(bdrm1, bdrm2, sliderValue) {
$.each($('.condo-box'), function() {
$this = $(this);
condoData = $this.data();
if(bdrm1 && !bdrm2){
if ((condoData.bdrms == 1) && (condoData.sqft <= sliderValue)){
$this.show();
} else {
$this.hide();
}
} else if(bdrm2 && !bdrm1){
if ((condoData.bdrms == 2) && (condoData.sqft <= sliderValue)){
$this.show();
} else {
$this.hide();
}
} else {
$this.show();
}
});
}
// Set values for units
$('#jackson').data({
id:1,
sqft:897,
bdrms:2
});
$('#nicholl').data({
id:2,
sqft:808,
bdrms:2
});
$('#atwood').data({
id:3,
sqft:1020,
bdrms:2
});
//etc
//MAIN SCRIPT
$(document).ready(function() {
//print slider value to slider textbox
printValue('slider','rangeValue');
//when a bdrm box is checked ..
$("#1bdrm, #2bdrm").click(function(){
getValues();
});
//when the slider is moved
$("#slider").change(function() {
getValues();
});
});
答案 0 :(得分:1)
你的其他条件不是检查sqft和滑块,它应该是:
ear {
into("META-INF") {
from("META-INF")
}
}
https://jsfiddle.net/mwqkztn8/1/
或者,甚至更简单,整件事情可能只是:
else {
if ((condoData.sqft <= sliderValue)){
$this.show();
} else {
$this.hide();
}
}