JQuery实现我爱我家条件筛选

235 阅读2分钟

代码比较粗糙,还望谅解,欢迎各位仁兄指点建议 页面效果如下:

实现点击相应区域,下方条件区域同步显示,再点击选中的黄色按钮,下方出现的条件也会相应消失,当删除下方条件时,上方黄色选中状态也会消失

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
            text-decoration: none;
        }

        .box {
            width: 1000px;
            margin: 100px;
            font-size: 14px;
        }

        ul.list {
            display: flex;
            margin: 5px 0;
        }

        ul.list .input {
            display: block;
            cursor: pointer;
            width: 13px;
            height: 13px;
            float: left;
            background: url('./img/icon2.png') no-repeat;
            background-position: -27px 0;
            margin-right: 5px;

        }

        ul.list .input.oncheck {
            background-position: 0 0;
        }

        ul.list li,.tiaojian li {
            padding: 5px 10px;
            border-radius: 4px;
            display: flex;
            align-items: center;
        }

        .active {
            color: #000;
        }
        .tiaojian{
            display: flex;
        }
        .tiaojian .item {
            background: white;
            color: #000;
        }

        .tiaojian span {
            display: inline-block;
            padding: 5px 5px;
            position: relative;
            border: 1px solid #eee;
            margin: 0 5px;
        }

        .tiaojian span a {
            position: absolute;
            top: -5px;
            right: -5px;
            display: block;
            width: 10px;
            height: 10px;
            border-radius: 50%;
            border: 1px solid red;
            text-align: center;
            line-height: 10px;
            color: red;
        }
    </style>
</head>

<body>
    <div class="box">
        <ul class="fangjia list">
            <li>房价</li>
            <li class="item active">
            </li>
        </ul>
        <ul class="huxin list">
            <li>户型</li>
            <li class="item active">
            </li>
        </ul>
        <ul class="quyu list">
            <li>区域</li>
            <li class="item active">

            </li>
        </ul>
        <ul class="tiaojian">
            <li>条件</li>
            <li class="item tab_fangjia">
                
            </li>
        </ul>

    </div>
</body>
<script src="./js/jquery-3.4.1.min.js"></script>
<script>
    $.get('./data/house.json', res => {
        //用forEach数组增加页面元素
        res.fangjia.forEach(item => {
            $('.fangjia').append(`
            <li class="item" td={list_name:fangjia,type:${item}}>
                <span class = 'input'></span>${item}</li>
            `)
        });
        res.huxin.forEach(item => {
            $('.huxin').append(`
            <li class="item" td={list_name:huxin,type:${item}}>
            
                <span class = 'input'></span>${item}</li>
            `)
        });
        res.quyu.forEach(item => {
            $('.quyu').append(`
            <li class="item" td={list_name:quyu,type:${item}}>
                <span class = 'input'></span>${item}</li>
            `)
        });
    })
    $('.list').on('click', 'li.item', function () {
        //点击一次选中,点击第二次取消
        $(this).children('span').toggleClass('oncheck')
        //将所有条件下的span删除,后期按数组中有的元素增加
        $('.tiaojian .tab_fangjia span').remove()
        //遍历高亮下的元素,有哪些选中则增加相应的span标签
        $('.box li .oncheck').parent().each(function (i,item) {
            $('.tiaojian .tab_fangjia').append(`<span td=${$(this).attr('td')}>${$(this).text()}<a href="#">×</a></span>`).html()
        });

    })
    $('.tiaojian ').on('click','span a',function(){
        //查找点击的父元素的span的td是多少,查找高亮的td一致的下标,删除他
       
       //将当前删除的div的td属性值设为remove
       let remove = $(this).parent().attr('td')
       //删除点击的父元素span
        $(this).parent().remove()
        //遍历当前高亮的元素,查找父元素的td属性和它一样的元素,删除它
        $('.box li .oncheck').parent().each(function (i,item) {
          console.log($(this).attr('td'));
            if($(this).attr('td')===remove){
                $(this).children('span').removeClass('oncheck')
            }
        });
    })


</script>

</html>

JSON文件

{
    "fangjia":[
        "80W以下",
        "80-120W",
        "120-150W",
        "150W以上"
    ],
    "huxin":[
        "一室",
        "两室一厅",
        "三室"
    ],
    "quyu":[
        "江宁",
        "鼓楼",
        "雨花台"
    ]
}