108 lines
3.8 KiB
HTML
108 lines
3.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<link href="../reset.css" rel="stylesheet"/>
|
|
<link href="./style.css" rel="stylesheet"/>
|
|
|
|
<title>MixItUp Demo - Checkboxes with Reset Checkbox</title>
|
|
</head>
|
|
<body>
|
|
<div class="controls">
|
|
<div class="checkbox-group">
|
|
<div class="checkbox">
|
|
<label class="checkbox-label">All</label>
|
|
<input type="checkbox" value="all" checked/>
|
|
</div>
|
|
|
|
<div class="checkbox">
|
|
<label class="checkbox-label">Green</label>
|
|
<input type="checkbox" value=".green"/>
|
|
</div>
|
|
|
|
<div class="checkbox">
|
|
<label class="checkbox-label">Blue</label>
|
|
<input type="checkbox" value=".blue"/>
|
|
</div>
|
|
|
|
<div class="checkbox">
|
|
<label class="checkbox-label">Pink</label>
|
|
<input type="checkbox" value=".pink"/>
|
|
</div>
|
|
</div>
|
|
|
|
<button type="button" class="control" data-sort="default:asc">Asc</button>
|
|
<button type="button" class="control" data-sort="default:desc">Desc</button>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<div class="mix green"></div>
|
|
<div class="mix green"></div>
|
|
<div class="mix blue"></div>
|
|
<div class="mix pink"></div>
|
|
<div class="mix green"></div>
|
|
<div class="mix blue"></div>
|
|
<div class="mix pink"></div>
|
|
<div class="mix blue"></div>
|
|
|
|
<div class="gap"></div>
|
|
<div class="gap"></div>
|
|
<div class="gap"></div>
|
|
</div>
|
|
|
|
<script src="../mixitup.min.js"></script>
|
|
|
|
<script>
|
|
// In this example, we must bind a 'change' event handler to
|
|
// our checkboxes, then interact with the mixer via
|
|
// its .filter() API methods.
|
|
|
|
var containerEl = document.querySelector('.container');
|
|
var checkboxGroup = document.querySelector('.checkbox-group');
|
|
var checkboxes = checkboxGroup.querySelectorAll('input[type="checkbox"]');
|
|
var allCheckbox = checkboxGroup.querySelector('input[value="all"]');
|
|
|
|
var mixer = mixitup(containerEl);
|
|
|
|
checkboxGroup.addEventListener('change', function(e) {
|
|
var selectors = [];
|
|
var checkbox;
|
|
var i;
|
|
|
|
if (e.target === allCheckbox && e.target.checked) {
|
|
// If the "all" checkbox was checked, uncheck all other checkboxes
|
|
|
|
for (i = 0; i < checkboxes.length; i++) {
|
|
checkbox = checkboxes[i];
|
|
|
|
if (checkbox !== allCheckbox) checkbox.checked = false;
|
|
}
|
|
} else {
|
|
// Another checkbox was changed, uncheck "all".
|
|
|
|
allCheckbox.checked = false;
|
|
}
|
|
|
|
// Iterate through all checkboxes, pushing the
|
|
// values of those that are checked into an array
|
|
|
|
for (i = 0; i < checkboxes.length; i++) {
|
|
checkbox = checkboxes[i];
|
|
|
|
if (checkbox.checked) selectors.push(checkbox.value);
|
|
}
|
|
|
|
// If there are values in the array, join it into a string
|
|
// using your desired logic, and send to the mixer's .filter()
|
|
// method, otherwise filter by 'all'
|
|
|
|
var selectorString = selectors.length > 0 ?
|
|
selectors.join(',') : // or '.' for AND logic
|
|
'all';
|
|
|
|
mixer.filter(selectorString);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |