【发布时间】:2021-07-10 04:56:58
【问题描述】:
我有代码(感谢@CarstenLøvboAndersen)用于根据 OR 条件过滤元素,我需要将其更改为条件 AND。
此时我选择红色和蓝色的结果是每个具有红色或蓝色类的元素。我需要将其更改为条件,因此当我选择红色和蓝色时,结果必须是同时满足这两个条件的元素。这意味着只有类同时包含红色和蓝色的元素。
$('.selector button').click(function() {
$('.selector input').prop("checked", false).trigger("change");
});
$('.selector input').change(function() {
$('.filterelements div').hide();
$('.selector input:checked').each(function() {
$('.filterelements div.' + $(this).val()).show();
})
if ($('.selector input:checked').length == 0) {
$('.filterelements div').show();
}
});
.filterelements {
width: 210px;
}
.red,
.green,
.blue,
.redgreen,
.redblue {
width: 50px;
height: 50px;
float: left;
margin: 10px;
}
.red {
background: #ff2600;
}
.green {
background: #a5de00;
}
.blue {
background: #0087ff;
}
.redgreen {
background: rgb(255, 38, 0);
background: linear-gradient(90deg, rgba(255, 38, 0, 1) 0%, rgba(165, 222, 0, 1) 100%);
}
.redblue {
background: rgb(255, 38, 0);
background: linear-gradient(90deg, rgba(255, 38, 0, 1) 0%, rgba(0, 135, 255, 1) 100%);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div class="selector">
<button type="button" name="all">Show all</button>
<input type="checkbox" name="red" value="red">red
<input type="checkbox" name="blue" value="blue">blue
<input type="checkbox" name="green" value="green">green
</div>
<hr />
<div class="filterelements">
<div class="red" rel="color:red"></div>
<div class="green" rel="color:green"></div>
<div class="blue" rel="color:blue"></div>
<div class="redgreen red green" rel="color:red|color:green"></div>
<div class="green" rel="color:green"></div>
<div class="red" rel="color:red"></div>
<div class="redblue red blue" rel="color:red|color:blue"></div>
</div>
</body>
</html>
【问题讨论】:
标签: javascript jquery filter conditional-statements filtering