6

jQuery isotope itemselectorをフィルタリングするための入力チェックボックスについてです。

こちらのデモを参照してください。ページが読み込まれると、チェックボックスがオンになります。ただし、ユーザーがすべてのチェックボックスをオフにすると、問題が発生します.items。空のコンテナーではなく、すべてが表示されます。

$checkboxes.change(function(){
    var filters = [];
    // get checked checkboxes values                
    $checkboxes.filter(':checked').each(function(){
    filters.push( this.value );
    });
    // ['.red', '.blue'] -> '.red, .blue'
    filters = filters.join(', ');
    $container.isotope({ filter: filters });
});

よろしくお願いします。

4

2 に答える 2

5

同位体ライブラリは意図したとおりに機能しています。

filter-セレクターに一致するアイテム要素を表示し、一致しない要素を非表示にするフィルターを設定します。

値'*'または''(空の文字列):すべてのアイテム要素を表示します

この動作を望まず、代わりにすべてのフィルターが選択されたときに要素を表示したくない場合は、フィルター文字列を存在しないものに変更する必要があります。

if(filters.length == 0){
    filters = 'purplemonkyeydishwasher';
}
else{
    filters = filters.join(', ');
}
$container.isotope({ filter: filters });

これにより、希望する動作が得られます。フィドルを更新しました。すべてのフィルターが選択されると、すべての要素が非表示になります。

于 2013-01-14T03:07:25.213 に答える
1

あなたは単にこれを行うことができます:

$container.isotope({ filter: ( filters == null || filters.length == 0 ) ? 'default' : filters });`

default常に使用されていない場所。デモを見るhttp://jsfiddle.net/G6LRL/

于 2013-01-18T02:30:43.123 に答える