Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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过滤器_Javascript_Jquery_Checkbox_Filter - Fatal编程技术网

带复选框的Javascript过滤器

带复选框的Javascript过滤器,javascript,jquery,checkbox,filter,Javascript,Jquery,Checkbox,Filter,我试图使用复选框来过滤页面内容。我让它在选中该框时隐藏内容,但在未选中时不会再次显示所有内容。任何帮助都将不胜感激。先谢谢你 $(document).ready(function() { $('input').change(function(){ $('input').each(function(){ var checked; if (checked = $(this).attr('checked')); var reclessons =

我试图使用复选框来过滤页面内容。我让它在选中该框时隐藏内容,但在未选中时不会再次显示所有内容。任何帮助都将不胜感激。先谢谢你

$(document).ready(function() {
$('input').change(function(){
    $('input').each(function(){
        var checked;
        if (checked = $(this).attr('checked'));
        var reclessons = $('li[data-rec='+$(this).data('rec')+']');
        checked ?  reclessons.show('slow'): reclessons.hide('slow');
    });
    var unchecked=0;
    if(unchecked=0){$('li').show('slow');}
});
});

这是你想要什么的基础。注意
道具
是否已选中

.attr()
方法不返回布尔值,而且
=
是赋值,不比较值,应使用
=
=
运算符进行比较

var $ch = $('input[type=checkbox]');
$ch.change(function() {
    // show/hide the related `li` element
    $('li[data-rec='+$(this).data('rec')+']').toggle(this.checked);
    // show all `li` elements if there is no checked checkbox 
    if ( $ch.filter(':checked').length === 0 ) {
       $('li').show();
    } 
});

在这里,我使用了我的复选框项目烹饪。下面的代码段给出了复选框筛选的逻辑
handleguisinechange
是包含逻辑的函数。循环的
长度是8,因为我在这里选择的菜系数(复选框项目数)是8。用复选框数据替换此处的
菜系
。应用此逻辑,您的复选框项就可以进行筛选了

在axios内部,我使用了自己的后端API和端口号

handleguisinechange=(烹饪id)=>
{
const{cuisineArray}=this.state;//构造函数中声明的空数组
if(cuisineArray.indexOf(cuisine\u id)=-1)
{
cuisineArray.push(烹饪id);
}
其他的
{
var index=cuisineArray.indexOf(烹饪id);
菜系.拼接(索引,1);
}    
const{cuisineArray2}=this.state;//构造函数中声明的空数组
设i=0;
对于(i=0;i
{
this.setState({restaurants:res.data.restaurants});
})
.catch(err=>console.log(err))
}
render()
{
const{restaurants}=this.state;
返回(
this.handleguisinechange(“1”)}/>
北印度
this.handleguisinechange(“2”)}/>
南印度
此.handleguisinechange(“3”)}/>
中国人
this.handleguisinechange(“1”)}/>
快餐
this.handleguisinechange(“1”)}/>
街头小吃
this.handleguisinechange(“1”)}/>
美国人
this.handleguisinechange(“1”)}/>
意大利人
this.handleguisinechange(“1”)}/>
墨西哥人
)

}//render end
只是一个建议,将筛选复选框赋予它们自己的类,并通过该类选择它们,而不是选择所有输入。如果
语句都有
=
第一个是速记,第二个是错误您应该真正使用
.prop(“checked”)
@stevell为什么
.prop('checked')
返回
.checked
属性的值,即
this.checked
。没有区别。但事实上,
.prop()
是为作业制作的,
.checked
是一个未记录的功能。@stevemarvell实际上
.prop()
不属于任何标准。它只是jQuery对象的一个(helper)方法,使用的很多都是文档化的helper函数。
$(document).ready(function() {
    $('input[type=checkbox][data-target]').change(function() {
        var checked = $(this).prop('checked');
        var target = $(this).data('target');
        $('#' + target).toggle(checked);
    });
});
var $ch = $('input[type=checkbox]');
$ch.change(function() {
    // show/hide the related `li` element
    $('li[data-rec='+$(this).data('rec')+']').toggle(this.checked);
    // show all `li` elements if there is no checked checkbox 
    if ( $ch.filter(':checked').length === 0 ) {
       $('li').show();
    } 
});