jQueryアイソトープフィルタリング:グリッドのデータカテゴリにアイテムがない場合にクラスを追加します

BlueDogRanch

グリッドアイテムをフィルターで並べ替えた同位体レイアウトがあります。アイテムをボタンで並べ替えると、選択したデータカテゴリにないグリッド内のアイテムのCSSの不透明度が.25に変更されます。

問題は、グリッドが完了すると(最初のページの読み込み時、または並べ替えのボタンアクションによる「arrangeComplete」の後)、グリッドにアイテムがない特定のデータカテゴリがあることです。つまり、グリッドにアイテムがないために並べ替えられなくても、一部の並べ替えボタンはクリック可能です。

これらのボタンにクラスを追加し、ボタンを「デクリック」して、アクティブなリンクにならないようにします。

Codepen:http://codepen.io/anon/pen/WooJom

つまり、[すべて]、[赤]、[緑]、[青]、[白]のボタンにはすべてアイテムと並べ替えがあります。オレンジとグレーのボタンにはアイテムがないので、クラスを追加して「クリック解除」したいと思います。

どうやって

1)グリッド内のアイテムを数えます。

2)アイテムがゼロかどうかを確認し、存在する場合は

3)ボタンの不透明度が0.25になるように、ボタンにクラスを追加します。

4)ボタンもクリック解除されているため、アクティブなリンクではありませんか?

それを行うために、どこでどのようにこの関数に追加しますか?

var selectedCategory;

var $grid = $('.isotope-list').isotope({
  itemSelector: '.grid-item',
  masonry: {
    columnWidth: 160,
    gutter: 20
  },
  getSortData: {
    selectedCategory: function( itemElem ) {
      return $( itemElem ).hasClass( selectedCategory ) ? 0 : 1;
    }
  }
});


var $items = $('.row').find('.grid-item');

$('.sort-button-group').on( 'click', '.button', function() {
  // set selectedCategory
  selectedCategory = $( this ).attr('data-category');
  if ( selectedCategory == 'all' ) {
    $grid.isotope({
      sortBy: 'original-order'
    });

    // restore all items to full opacity
    $items.css({
      opacity: 1
    });
    return;
  }


  // change opacity for selected/unselected items
  var selectedClass = '.' + selectedCategory;
  $items.filter( selectedClass ).css({
    opacity: 1
  });
  $items.not( selectedClass ).css({
    opacity: 0.25
  });

  // update sort data now that selectedCategory has changed
  $grid.isotope('updateSortData');
  $grid.isotope({ sortBy: 'selectedCategory' });
});

  // change is-checked class on buttons
$('.button-group').each( function( i, buttonGroup ) {
  var $buttonGroup = $( buttonGroup );
  $buttonGroup.on( 'click', 'button', function() {
    $buttonGroup.find('.is-checked').removeClass('is-checked');
    $( this ).addClass('is-checked');
  });
});

ボタンのHTML。これらのボタンにクラスを追加する必要があります。

<div class="button-container">
<div class="button-group sort-button-group">
<button class="button is-checked" data-category="all">all</button>
<button class="button" data-category="red">red</button>
<button class="button" data-category="green">green</button>
<button class="button" data-category="blue">blue</button>
<button class="button" data-category="white">white</button>
<button class="button" data-category="orange">orange</button>
<button class="button" data-category="gray">gray</button>
</div></div>
n4m31ess_c0d3r

これは、arrangeCompleteイベントのコールバックをバインドすることで実現できますこれは、ページ上でこれをトリガしload、あなたが設定する必要があります、initLayoutfalse同位体のセットアップオプションで、手動で初期レイアウトをトリガするために、以下を実行します。

var $grid = $('.grid').isotope({
  ...
  // disable initial layout
  initLayout: false,
  ...
});

// ********** Event binding **********
// use $grid.one('arrangeComplete', ...) if it is only needed at initial page load
$grid.on('arrangeComplete', disableEmptySortButtons);

// manually trigger initial layout
$grid.isotope();

各カテゴリアイテムの数を取得するには、並べ替えボタンのカテゴリを繰り返し処理し、grid-itemsそのカテゴリ関連する番号を見つけます。その場合0は、その並べ替えボタンに対して次の手順を実行します。

a)ボタンの外観のクラスdisable追加opacity: 0.25します

b)disabledボタンのクリック機能を無効にするように属性を設定します

その関数は次のようになります。

var disableEmptySortButtons = function() {
  $('.button-group button').each(function(i, btn) {
    var $btn = $(btn),
        thisCategory = $btn.attr('data-category');
    if (thisCategory !== 'all' && $('.isotope-container').find('.' + thisCategory).length === 0) {
      $btn.addClass('disabled').attr('disabled', 'disabled');
    }
  });
};

これは完全な実例のために更新されたコードペンです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データグリッドアイテムソースを別のクラスのプロパティにバインドしようとしています

分類Dev

角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

分類Dev

フィルタリングされたアイソトープアイテムにクラスを追加する

分類Dev

Xamarin.Forms iOS-アプリが現在アクティブでない場合やバックグラウンドにある場合でも、デバイスがインターネットに接続するとデータのアップロードを開始します

分類Dev

アイテムの配列内のフィールドが存在する場合はそれをインクリメントするマングースクエリ、それ以外の場合はドキュメントに追加します(このタイトルの表現に苦労しています)

分類Dev

AVPLayerViewControllerにアクティビティインジケーターを追加しますか?(注:ビデオがフルスクリーンモードの場合)

分類Dev

エクストラグリッド列の自動フィルター演算子に新しいアイテムを追加します

分類Dev

カスタムクリックアンドドラッグを角度で行うときに、デフォルトのカーソルスタイル(テキストセレクター)を無効にするにはどうすればよいですか?

分類Dev

RAMにはアクティブなものだけを保持しながら、バックグラウンドで実行されているアイドル状態のソフトウェアのメモリ データをスワップするために転送しますか?

分類Dev

リストを動的にフィルタリングし、ループ内のアイテムを削除します

分類Dev

グーグルはクラスターアイテムにアンドロイドをマップしますクリックが機能しません

分類Dev

Scala Sparkプログラム用のjenkinsを使用したMavenビルド:「インストールするプライマリアーティファクトはなく、代わりにアタッチされたアーティファクトをインストールします

分類Dev

特定のカテゴリが選択されている場合、チェックアウトページのカスタムドロップダウンフィールドを非表示にする方法はありますか?

分類Dev

ビューにフローティングアクションボタンが含まれている場合にのみスナックバーが表示されている場合、Androidエスプレッソテストがフリーズします

分類Dev

ユーザーがテキスト/色/画像などを追加してアイテムをカスタマイズ/パーソナライズできるようにするためのライブラリ/プラグイン/アプリの推奨事項?

分類Dev

アプリがバックグラウンドにあるときにタイムスタンプを保存します。リアクトネイティブ

分類Dev

テストアセンブリパターンを配置しているにもかかわらず、テストアセンブリがVSTS Azureビルドパイプラインでフィルタリングされないのはなぜですか?

分類Dev

エンティティにインデックス付けされていないデータが以前にある場合、インデックス作成はGoogleアプリデータストアでどのように機能しますか?

分類Dev

プログレスバー(シークバー)の最後にあるモバイルフレンドリーな「ドットグラブ」をカスタムhtm5オーディオプレーヤーに追加します

分類Dev

再バインドせずにグリッドのデータソースにアイテムを追加する

分類Dev

アイソトーププラグイン:特定のカテゴリのフィルターのみを生成しますか?

分類Dev

BlockingQueueオファーメソッドがリストにアイテムを追加しない場合がある

分類Dev

リストアイテムタグ内のアンカータグにスタイリングを追加する

分類Dev

エンタープライズアーキテクトのスクリプティング:java apieaapi.jarでメソッドが欠落しています

分類Dev

デフォルトのコンストラクタが指定されていない場合、Javaシリアライゼーションはどのように最終フィールドをデシリアライズしますか?

分類Dev

アイテムの高さが動的な場合、デバイスの向きに基づいて動的なフラッターグリッドレイアウトを作成するにはどうすればよいですか?

分類Dev

アイテムの高さが動的な場合、デバイスの向きに基づいて動的なフラッターグリッドレイアウトを作成するにはどうすればよいですか?

分類Dev

pandasデータフレームに列を追加すると、カテゴリカルインデックスエラーが発生します

分類Dev

エラー:デフォルトのローカルデプロイメントが構成されていない場合、仮想リポジトリにアップロードできません(Dockerアーティファクト)

Related 関連記事

  1. 1

    データグリッドアイテムソースを別のクラスのプロパティにバインドしようとしています

  2. 2

    角度グリッドには、インライン剣道グリッドのエディターテンプレート(リアクティブフォーム)を含む列があります。テンプレートコントロール(テキストボックス)とフォームはリンクしません

  3. 3

    フィルタリングされたアイソトープアイテムにクラスを追加する

  4. 4

    Xamarin.Forms iOS-アプリが現在アクティブでない場合やバックグラウンドにある場合でも、デバイスがインターネットに接続するとデータのアップロードを開始します

  5. 5

    アイテムの配列内のフィールドが存在する場合はそれをインクリメントするマングースクエリ、それ以外の場合はドキュメントに追加します(このタイトルの表現に苦労しています)

  6. 6

    AVPLayerViewControllerにアクティビティインジケーターを追加しますか?(注:ビデオがフルスクリーンモードの場合)

  7. 7

    エクストラグリッド列の自動フィルター演算子に新しいアイテムを追加します

  8. 8

    カスタムクリックアンドドラッグを角度で行うときに、デフォルトのカーソルスタイル(テキストセレクター)を無効にするにはどうすればよいですか?

  9. 9

    RAMにはアクティブなものだけを保持しながら、バックグラウンドで実行されているアイドル状態のソフトウェアのメモリ データをスワップするために転送しますか?

  10. 10

    リストを動的にフィルタリングし、ループ内のアイテムを削除します

  11. 11

    グーグルはクラスターアイテムにアンドロイドをマップしますクリックが機能しません

  12. 12

    Scala Sparkプログラム用のjenkinsを使用したMavenビルド:「インストールするプライマリアーティファクトはなく、代わりにアタッチされたアーティファクトをインストールします

  13. 13

    特定のカテゴリが選択されている場合、チェックアウトページのカスタムドロップダウンフィールドを非表示にする方法はありますか?

  14. 14

    ビューにフローティングアクションボタンが含まれている場合にのみスナックバーが表示されている場合、Androidエスプレッソテストがフリーズします

  15. 15

    ユーザーがテキスト/色/画像などを追加してアイテムをカスタマイズ/パーソナライズできるようにするためのライブラリ/プラグイン/アプリの推奨事項?

  16. 16

    アプリがバックグラウンドにあるときにタイムスタンプを保存します。リアクトネイティブ

  17. 17

    テストアセンブリパターンを配置しているにもかかわらず、テストアセンブリがVSTS Azureビルドパイプラインでフィルタリングされないのはなぜですか?

  18. 18

    エンティティにインデックス付けされていないデータが以前にある場合、インデックス作成はGoogleアプリデータストアでどのように機能しますか?

  19. 19

    プログレスバー(シークバー)の最後にあるモバイルフレンドリーな「ドットグラブ」をカスタムhtm5オーディオプレーヤーに追加します

  20. 20

    再バインドせずにグリッドのデータソースにアイテムを追加する

  21. 21

    アイソトーププラグイン:特定のカテゴリのフィルターのみを生成しますか?

  22. 22

    BlockingQueueオファーメソッドがリストにアイテムを追加しない場合がある

  23. 23

    リストアイテムタグ内のアンカータグにスタイリングを追加する

  24. 24

    エンタープライズアーキテクトのスクリプティング:java apieaapi.jarでメソッドが欠落しています

  25. 25

    デフォルトのコンストラクタが指定されていない場合、Javaシリアライゼーションはどのように最終フィールドをデシリアライズしますか?

  26. 26

    アイテムの高さが動的な場合、デバイスの向きに基づいて動的なフラッターグリッドレイアウトを作成するにはどうすればよいですか?

  27. 27

    アイテムの高さが動的な場合、デバイスの向きに基づいて動的なフラッターグリッドレイアウトを作成するにはどうすればよいですか?

  28. 28

    pandasデータフレームに列を追加すると、カテゴリカルインデックスエラーが発生します

  29. 29

    エラー:デフォルトのローカルデプロイメントが構成されていない場合、仮想リポジトリにアップロードできません(Dockerアーティファクト)

ホットタグ

アーカイブ