SO - 26486056

by Arun P Johny

HTML

<aside class="refinements" data-hasanyselected="false">
    <h2>REFINE BY</h2>
    <a href="#" class="clear-filter" data-clear="all">Clear All</a>
    <div class="panel" data-id="size" data-hasselections="false">
        <a href="#" class="refinement-header">
            <h3>
                <span class="facet-arrow" data-state="open"></span>
                <span class="facet-name">Size</span>
            </h3>
        </a>
        <a href="#" data-clear="size" class="clear-filter">Clear</a>
        <div class="options scrollable single-column">
            <ul>
                <li>
                    <input type="checkbox" id="size_1878"  />
                    <label for="size_1878">UK 4</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1924"  />
                    <label for="size_1924">UK 6</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1880"  />
                    <label for="size_1880">UK 8</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1944"  />
                    <label for="size_1944">UK 10</label>
                </li>
                <li>
                    <input type="checkbox" id="size_2077"  />
                    <label for="size_2077">UK 12</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1920"  />
                    <label for="size_1920">UK 14</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1992"  />
                    <label for="size_1992">UK 16</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1946"  />
                    <label for="size_1946">UK 18</label>
                </li>
                <li>
                    <input type="checkbox" id="size_1993"  />
                    <label for="size_1993">UK...

CSS

html {
    font-size: 20px;
}
ul, li {
    list-style: none;
    margin:0;
    padding:0;
}
.refinements {
    margin: 0 auto;
    width: 166px;
    position: relative;
}
.refinements a.refinement-header:active, .refinements a.refinement-header:hover, .refinements a.refinement-header:visited {
    color: #000;
}
.refinements h2 {
    border-bottom: 1px solid #999;
    color: #000;
    display: inline-block;
    font-family: Georgia;
    font-size: 1.02em;
    font-weight: normal;
    line-height: 1em;
    margin: 0;
    padding: 6px 0 15px;
    text-transform: uppercase;
    width: 100%;
}
.refinements[data-hasanyselected='False'] a.clear-filter, .refinements[data-hasanyselected='false'] a.clear-filter {
    display: none;
}
.refinements a.clear-filter {
    color: #666;
    font-size: 0.65rem;
    font-weight: bold;
    position: absolute;
    right: 0;
    text-decoration: none;
    top: 4px;
}
.refinements a.clear-filter:hover {
    text-decoration: underline;
}
.refinements .panel {
    border-bottom: 1px solid #999;
    clear: both;
    padding: 0 0 6px;
    position: relative;
}
.refinements .panel:last-of-type {
    border: none;
}
.refinements .panel a {
    line-height: 0.95em;
    position: relative;
    text-decoration: none;
}
.refinements .panel a h3 {
    line-height: 0.9em;
    margin: 4px 0 1px;
    position: relative;
    text-transform: uppercase;
}
.refinements .panel a h3 span.facet-arrow[data-state='open'] {
    border-color: #666666 rgba(102, 102, 102, 0) rgba(102, 102, 102, 0) rgba(102, 102, 102, 0);
    border-style: solid;
    border-width: 5px;
    height: 0;
    width: 0;
    left: 1px;
    position: absolute;
    top: 10px;
}
.no-rgba .refinements .panel a h3 span.facet-arrow[data-state='open'] {
    border-color: #666666 transparent transparent transparent;
}
.ie7 .refinements .panel a h3 span.facet-arrow[data-state='open'], .ie8 .refinements .panel a h3 span.facet-arrow[data-state='open'] {
    border-width: 5px;
}
.refinements...

JavaScript

var $clearAll = $('.refinements > .clear-filter'),
    $checks = $('.options input[type="checkbox"]');
$checks.change(function () {
    var $options = $(this).closest('.options'),
        $clear = $options.prev();
    //if the current checkbox is checked we can show the all and clear buttons
    if (this.checked) {
        $clear.show();
        $clearAll.show();
    } else {
        //if it is an uncheck operation then set the visibility based on overall state of respective checkboxes
        $clear.toggle($options.find('input[type="checkbox"]').is(':checked'))
        $clearAll.toggle($checks.is(':checked'))
    }
})