代码比较粗糙,还望谅解,欢迎各位仁兄指点建议 页面效果如下:
<!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":[
"江宁",
"鼓楼",
"雨花台"
]
}