筛选弹窗开发问题:选中分类后替换blog-filter内All为选中分类名
你只需要修改现有JS代码,在分类点击事件的回调中新增顶部文本更新逻辑即可,同时优化原有active类切换的范围,避免误操作顶部的筛选按钮样式。
修改后的完整JS代码
$('.js-filter-blog-list').on('click', event => { const modalFilter = document.querySelector('.blog-filter-container'); $(modalFilter).toggleClass('open'); }); document.querySelectorAll('.blog-filter-container .blog-filter_item').forEach(el => { el.addEventListener('click', () => { // 只切换弹窗内的选中状态,避免影响顶部按钮 document .querySelector('.blog-filter-container .blog-filter_item.active') .classList.remove('active'); el.classList.add('active'); // 新增:更新顶部显示的选中分类名 let selectedText = el.textContent.trim(); // 如果你不需要显示分类后面的文章数量,就用下面这行替换上面的 // let selectedText = el.textContent.replace(/\s*\(\d+\)$/, '').trim(); document.querySelector('.blog-filter .js-filter-blog-list').textContent = selectedText; var dataFilter = $(el).attr('data-filter'); if (dataFilter == 'all') { $('.blog-list').show(); } else { $('.blog-list').hide(); $(dataFilter).show(); } // 选中后自动关闭弹窗(可选,如果你需要的话可以打开注释) // $('.blog-filter-container').removeClass('open'); }); });
核心修改说明
- 调整了事件绑定的范围,只给弹窗内的筛选项绑定点击事件,避免重复绑定顶部按钮的点击事件
- 优化了active类的切换范围,只修改弹窗内的选中状态,不会影响顶部按钮的原有样式
- 新增选中文本获取和顶部容器内容更新逻辑,可根据需求选择是否保留文章计数显示
内容的提问来源于stack exchange,提问作者user16978178
相关产品推荐
相关产品推荐

