这是一个简单的 jQuery 过滤器。我试图允许选择多个选项,并全部过滤。相反,它通过“或”进行过滤,或者只是选择最近选择的选项。
无论哪种方式,它都不允许多选。
我错过了什么?
$(function() {
var $filterSelect = $("#FilterSelect"),
$sessionSelect = $("#SessionSelect"),
$trackSelect = $("#TrackSelect"),
$sortSelect = $("#SortSelect"),
$container = $("#Container");
$container.mixItUp();
$filterSelect.on("change", function() {
$container.mixItUp("filter", this.value);
});
$sessionSelect.on("change", function() {
$container.mixItUp("filter", this.value);
});
$trackSelect.on("change", function() {
$container.mixItUp("filter", this.value);
});
$sortSelect.on("change", function() {
$container.mixItUp("sort", this.value);
});
});
*{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
body, button{
font-family: 'Helvetica Neue', arial, sans-serif;
}
.controls{
padding: 2%;
background: #333;
color: #eee;
}
label{
font-weight: 300;
margin: 0 .4em 0 1em;
}
label:first-child{
margin-left: 0;
}
button{
display: inline-block;
padding: .4em .8em;
background: #666;
border: 0;
color: #ddd;
font-size: 16px;
font-weight: 300;
border-radius: 4px;
cursor: pointer;
}
button.active{
background: #68b8c4;
}
button:focus{
outline: 0 none;
}
button + label{
margin-left: 1em;
}
.container{
padding: 2% 2% 0;
text-align: justify;
font-size: 0.1px;
background: #68b8c4;
-webkit-backface-visibility: hidden;
}
.container:after{
content: '';
display: inline-block;
width: 100%;
}
.container .mix,
.container .gap{
display: inline-block;
width: 49%;
}
.container .mix{
text-align: left;
background: #03899c;
margin-bottom: 2%;
display: none;
}
.container .mix.category-1{
border-top: 2px solid limegreen;
}
.container .mix.category-2{
border-top: 2px solid yellow;
}
.container .mix:after{
content: attr(data-myorder);
color: white;
font-size: 16px;
display: inline-block;
vertical-align: top;
padding: 4% 6%;
font-weight: 700;
}
.container .mix:before{
content: '';
display: inline-block;
padding-top: 60%;
}
@media all and (min-width: 420px){
.container .mix,
.container .gap{
width: 32%;
}
}
@media all and (min-width: 640px){
.container .mix,
.container .gap{
width: 23.5%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mixitup/2.1.11/jquery.mixitup.js"></script>
<div class="controls">
<label>By Date</label>
<select id="FilterSelect">
<option value="all">All</option>
<option value=".date-1">April 26</option>
<option value=".date-2">April 27</option>
<option value=".date-3">April 28</option>
<option value=".date-4">April 29</option>
</select>
<label>By Session Type</label>
<select id="SessionSelect">
<option value="all">All</option>
<option value=".signature">Signature</option>
<option value=".breakout">Breakout</option>
<option value=".workshop">Workshop</option>
</select>
<label>By Education Track</label>
<select id="TrackSelect">
<option value="all">All</option>
<option value=".howto">How-To</option>
<option value=".people">People</option>
<option value=".sourcing">Sourcing for Value</option>
<option value=".csr">Corporate Social Responsibility</option>
<option value=".digital">Digital Transformation</option>
<option value=".challenges">Challenges</option>
<option value=".strategic">Strategic to Practical Sessions</option>
</select>
<label>Sort:</label>
<select id="SortSelect">
<option value="myorder:asc">Asc</option>
<option value="myorder:desc">Desc</option>
</select>
</div>
<div id="Container" class="container">
<div class="mix date-1 signature howto" data-myorder="1"></div>
<div class="mix date-3 breakout people" data-myorder="2"></div>
<div class="mix date-1 workshop sourcing" data-myorder="3"></div>
<div class="mix date-2 signature csr" data-myorder="4"></div>
<div class="mix date-3 breakout digital" data-myorder="5"></div>
<div class="mix date-4 workshop challenges" data-myorder="6"></div>
<div class="mix date-2 signature strategic" data-myorder="7"></div>
<div class="mix date-4 breakout howto" data-myorder="8"></div>
<div class="gap"></div>
<div class="gap"></div>
</div>