Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery通过多个数字范围进行过滤_Javascript_Jquery_Filter_Filtering_Range - Fatal编程技术网

Javascript Jquery通过多个数字范围进行过滤

Javascript Jquery通过多个数字范围进行过滤,javascript,jquery,filter,filtering,range,Javascript,Jquery,Filter,Filtering,Range,我想我被卡住了。。。我正在尝试获取项目列表,并根据对象的属性创建过滤器。我把它简化成一个简单的例子,列出了成本和年份。我目前在页面上有一个书籍列表和过滤器(复选框),可以选择这些过滤器来仅显示成本和/或年份范围内的书籍。以下是我目前掌握的代码: <div id="filters"> <h1>FILTERS</h1> <div class="filter filter_cost"> <input class="target" type=

我想我被卡住了。。。我正在尝试获取项目列表,并根据对象的属性创建过滤器。我把它简化成一个简单的例子,列出了成本和年份。我目前在页面上有一个书籍列表和过滤器(复选框),可以选择这些过滤器来仅显示成本和/或年份范围内的书籍。以下是我目前掌握的代码:

<div id="filters">
<h1>FILTERS</h1>
<div class="filter filter_cost">
    <input class="target" type="checkbox" min="0" max="9" />Under $10.00<br/>
    <input class="target" type="checkbox" min="10" max="19" />$10-$19<br/>
    <input class="target" type="checkbox" min="20" max="29" />$20-$29<br/>
    <input class="target" type="checkbox" min="30" max="39" />$30-$39<br/>
    <input class="target" type="checkbox" min="40" max="1000" />$40 and Over<br/>
</div>
<div class="filter filter_year">
    <input class="target" type="checkbox" min="1700" max="1799" />18th Century<br/>
    <input class="target" type="checkbox" min="1800" max="1899" />19th Century<br/>
    <input class="target" type="checkbox" min="1900" max="1999" />20th Century<br/>
    <input class="target" type="checkbox" min="2000" max="2999" />21st Centruy<br/>
</div>
</div>
<div id="books">
<h1>BOOKS</h1>
<div class="book">
    <h1>Book 1</h1>
    <input type="hidden" name="cost" value="13" />
    <input type="hidden" name="year" value="1997" />
</div>
<div class="book">
    <h1>Book 2</h1>
    <input type="hidden" name="cost" value="22" />
     <input type="hidden" name="year" value="1872" />
</div>
</div>

过滤器
低于10.00美元
$10-$19
$20-$29
30-39美元
40美元及以上
18世纪
19世纪
20世纪
21世纪中心
书 第一册 第二册
和我的jQuery(使用1.6.2):

$(文档).ready(函数(){
$(“input.target”).change(函数(){
filterResults();
});
});
函数filterResults(){
$(“.book”)。每个(函数(){
var cost=$(this.find(“输入[name='cost']”)val();
var year=$(this.find(“输入[name='year']”)val();
var cover=$(this.find)(“input[name='cover']”)val();
var isHidden=假;
//log(“范围内的成本:+filterRange(成本,.filter_成本”);
//console.log(“范围内的年份:+filterge(年份,.filter_Year”);
var filterCost=filterAge(成本,“.filter_成本”)?showBook($(此)):hideBook($(此));
var filterYear=filterAge(year,“.filter_year”)?showBook($(this)):hideBook($(this));
isHidden?“:过滤器成本;
isHidden?“:过滤器耳朵;
功能展示手册(obj){
obj.show();
}
功能记忆库(obj){
isHidden=真;
隐藏对象();
}
})
}
功能过滤(金额、要素){
var checkedInputs=$(elem).find(“input:checked”).length;
var totalInputs=$(elem).find(“input”).length;
var inRange=函数(){
$(elem).find(“输入:选中”).each(函数(){
var min=$(this.attr('min');
var max=$(this.attr('max');
如果(金额>=min&&amount尝试:

函数过滤(金额、要素){
var checkedInputs=$(elem).find(“input:checked”).length;
var totalInputs=$(elem).find(“input”).length;
var inRange=假;
$(elem).find(“输入:选中”).each(函数(){
var min=$(this.attr('min');
var max=$(this.attr('max');

如果jquery中的(amount>=min&&amount,则dom元素返回语句上的每个循环都会中断。因此,您的实现是错误的。请尝试此方法

function filterRange(amount, elem) {
    var checkedInputs = $(elem).find("input:checked").length;
    var totalInputs = $(elem).find("input").length;
    var returnValue = false;

    $(elem).find("input:checked").each(function () {
        var min = $(this).attr('min');
        var max = $(this).attr('max');
        if(amount >= min && amount <= max){
            returnValue = true;
            return true;
        } 
     });

   return (checkedInputs == 0 || totalInputs == checkedInputs || returnValue );
}
函数过滤(金额、要素){
var checkedInputs=$(elem).find(“input:checked”).length;
var totalInputs=$(elem).find(“input”).length;
var returnValue=false;
$(elem).find(“输入:选中”).each(函数(){
var min=$(this.attr('min');
var max=$(this.attr('max');

如果(amount>=min&&amount是的,谢谢你……效果很好。我想我是脑子有问题。
function filterRange(amount, elem) {
    var checkedInputs = $(elem).find("input:checked").length;
    var totalInputs = $(elem).find("input").length;
    var inRange = false;
    $(elem).find("input:checked").each(function () {
        var min = $(this).attr('min');
        var max = $(this).attr('max');
        if (amount >= min && amount <= max) {
            inRange = true;
            return false;
        }
    });

    if (checkedInputs == 0 || totalInputs == checkedInputs) {
        return true;
    }
    if (inRange) {
        return true;
    } else {
        return false;
    }
}
function filterRange(amount, elem) {
    var checkedInputs = $(elem).find("input:checked").length;
    var totalInputs = $(elem).find("input").length;
    var returnValue = false;

    $(elem).find("input:checked").each(function () {
        var min = $(this).attr('min');
        var max = $(this).attr('max');
        if(amount >= min && amount <= max){
            returnValue = true;
            return true;
        } 
     });

   return (checkedInputs == 0 || totalInputs == checkedInputs || returnValue );
}