回答編集履歴
1
情報の追加。
    
        answer	
    CHANGED
    
    | @@ -32,4 +32,82 @@ | |
| 32 32 | 
             
            		}
         | 
| 33 33 | 
             
            	} );
         | 
| 34 34 | 
             
            } );
         | 
| 35 | 
            -
            ```**動くサンプル:**[https://jsfiddle.net/jwqyan5j/](https://jsfiddle.net/jwqyan5j/)
         | 
| 35 | 
            +
            ```**動くサンプル:**[https://jsfiddle.net/jwqyan5j/](https://jsfiddle.net/jwqyan5j/)
         | 
| 36 | 
            +
             | 
| 37 | 
            +
             | 
| 38 | 
            +
            ---
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            **追記:**
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            絞込みが出来れば #all とかおまけでいいよね?と手を抜いていました。下記でそれについては是正されていると思われます。
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            ```JavaScript
         | 
| 45 | 
            +
            $( function() {
         | 
| 46 | 
            +
            	$( '#search li label input:not(#all)' ).click( function() {
         | 
| 47 | 
            +
            		var inputkey = [ 'attribute', 'type', 'option' ]
         | 
| 48 | 
            +
            		  , i, l = inputkey.length
         | 
| 49 | 
            +
            		  , $res, $tmp, res = []
         | 
| 50 | 
            +
            		  , $all = $( '#all' );
         | 
| 51 | 
            +
            		  ;
         | 
| 52 | 
            +
            		$tmp = $( '#list > li' ).removeClass( 'active' );
         | 
| 53 | 
            +
            		for ( i = 0; i < l; i++ ) {
         | 
| 54 | 
            +
            			res = []
         | 
| 55 | 
            +
            			$( '#search input[id^="' + inputkey[ i ] + '"]:checked' ).each( function() {
         | 
| 56 | 
            +
            				res.push( $( this )[ 0 ].id );
         | 
| 57 | 
            +
            			} );
         | 
| 58 | 
            +
            			if ( !res.length ) { continue; }
         | 
| 59 | 
            +
            			$tmp = $( '#list > li.' + res.join( ', #list > li.' ) );
         | 
| 60 | 
            +
            			if ( !$res || !$res.length ) {
         | 
| 61 | 
            +
            				$res = $tmp;
         | 
| 62 | 
            +
            			} else if ( $tmp.length ) {
         | 
| 63 | 
            +
            				$res = $res.filter( '.' + res.join( ', .' ) );
         | 
| 64 | 
            +
            			}
         | 
| 65 | 
            +
            		}
         | 
| 66 | 
            +
            		if ( $res && $res.length ) {
         | 
| 67 | 
            +
            			$res.addClass( 'active' );
         | 
| 68 | 
            +
            			$all.prop( 'checked', false );
         | 
| 69 | 
            +
            		} else {
         | 
| 70 | 
            +
            			// No Selected
         | 
| 71 | 
            +
            			res = false;
         | 
| 72 | 
            +
            			$all.prop( 'checked', true );
         | 
| 73 | 
            +
            		}
         | 
| 74 | 
            +
            	} );
         | 
| 75 | 
            +
            	$( '#all' ).click( function() {
         | 
| 76 | 
            +
            		if (  $( this ).prop( 'checked') === true ) {
         | 
| 77 | 
            +
            			$( '#list > li' ).removeClass( 'active' );
         | 
| 78 | 
            +
            			$( '#search input:checked:not(#all)' ).prop( 'checked', false );
         | 
| 79 | 
            +
            		}
         | 
| 80 | 
            +
            	} );
         | 
| 81 | 
            +
            } );
         | 
| 82 | 
            +
            ```**動くサンプル:**[https://jsfiddle.net/jwqyan5j/2/](https://jsfiddle.net/jwqyan5j/2/)
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            ---
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            > 今回、絞り込み用のidとclassを「hogehoge01」というような形で、ナンバリングしたものを振っているのですが、これを、ナンバリングではなく、個別に単語で指定することは可能なのでしょうか。
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            可能です。
         | 
| 89 | 
            +
            下記部分は「idがinputkey[ i ]('attribute', 'type', 'option')から始まるもののうち、チェックされているもの」を1まとまりとして扱っています。その上でidをクラス名として後で使うために保存しています。
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            ```JavaScript
         | 
| 92 | 
            +
            $( '#search input[id^="' + inputkey[ i ] + '"]:checked' ).each( function() {
         | 
| 93 | 
            +
            	res.push( $( this )[ 0 ].id );
         | 
| 94 | 
            +
            } );
         | 
| 95 | 
            +
            ```
         | 
| 96 | 
            +
            ```HTML
         | 
| 97 | 
            +
            <input type="checkbox" id="attribute01" class="sort">
         | 
| 98 | 
            +
            ```例えばクラスで1まとまりにすることも出来ます。クラス名で使用する単語をid以外の要素(ここではdata-key)にすることも出来ます。
         | 
| 99 | 
            +
            ```JavaScript
         | 
| 100 | 
            +
            $( '#search input.' + inputkey[ i ] + ':checked' ).each( function() {
         | 
| 101 | 
            +
            	res.push( $( this ).attr( 'data-key' ) );
         | 
| 102 | 
            +
            } );
         | 
| 103 | 
            +
            ```
         | 
| 104 | 
            +
            ```HTML
         | 
| 105 | 
            +
            <input type="checkbox" data-key="keyword" class="sort attribute">
         | 
| 106 | 
            +
            ```
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            ---
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            > 検索条件にヒットするものがなかった場合
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            「// No Selected」の後の部分でそういったコードを追加すればいいと思いますよ。
         | 
| 113 | 
            +
            (今はとりあえず#allをチェックすることしかしていません)
         | 
