要素のリストがあります。リンクをクリックすると、要素をクラスでフィルタリングしたいと考えています。(今のところ大丈夫です)。問題: そのクラスの要素がない場合、そのことを示すメッセージを出力したい。
$('.filterEventsLinks a').click(function(){
// count total number of events
var evCount = $('.singleEvent').length;
// a list of comma-separated class names to filter are stored in the data attribute of the fired element
// for example: <a data-category="kids,teens,adults" href="#"></a>
var cats = $(this).data('category');
// split into an array
var catArr = cats.split(',');
// loop through
for(var i in catArr) {
var cat = '.CAT-' + catArr[i];
// hide things that do not have this category
$('.singleEvent').not(cat).slideUp(200);
// show things that do
$(cat).slideDown(200);
}
// count number of remaining visible elements
var evCount = $('.singleEvent').filter(':visible').length;
// do more...
});
最後の行を除いて、ここのすべてが期待どおりに機能します。うまくいかないように見える最後の行。現在表示されている数ではなく、常に存在する要素の数を返します。
この SO の質問に記載されている同じ問題:スライドアップ/スライドダウン後にリスト内の要素数をカウントする