You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现div默认全显点击筛选,无需初始display:none且SEO友好?

问题根因

你当前代码出现默认仅显示首个内容块的问题,完全来自CSS规则设置:

  • 全局规则.result-content { display: none }把所有内容块默认设为隐藏
  • 附加规则.result-content:first-of-type { display: block }单独把第一个内容块设为显示
    和JS逻辑没有关系。

另外初始直接给内容块设置display:none的写法确实存在SEO风险:多数搜索引擎爬虫首次抓取页面时不会执行JS,无法读取被CSS隐藏的内容,会影响页面内容收录。

SEO友好的实现方案

核心逻辑调整:页面初始状态下不设置任何内容隐藏规则,所有内容默认全部展示,仅当用户主动点击筛选选项时,才通过类名控制非目标内容的隐藏,保证爬虫首次抓取时能获取到全部完整内容,完全符合SEO规范。

完整实现代码

CSS代码

删除原有默认隐藏内容、单独显示首个内容的规则,新增独立的隐藏工具类,仅给需要隐藏的元素动态添加该类:

.tab-link {
  display: inline-block;
  margin-right: 10px;
  padding: 5px 0;
  cursor: pointer;
  text-decoration: none;
  color: #333;
}
/* 独立隐藏类,初始状态无元素携带该类,所有内容默认可见 */
.is-hidden {
  display: none;
}
/* 可选:当前选中筛选项的高亮样式 */
.tab-link.active {
  font-weight: 700;
  color: #165DFF;
}

JS代码

调整筛选交互逻辑,默认给「全部」选项加激活态,点击时动态切换内容的隐藏类:

// 初始化:给「全部」选项加选中态
$('.tab-link[data-div="widgets"]').addClass('active');

$('.tab-link').on('click', function() {
  const targetCategory = $(this).data('div');
  // 切换筛选项的选中状态
  $('.tab-link').removeClass('active');
  $(this).addClass('active');
  // 先清除所有内容的隐藏类,恢复全部展示
  $('.result-content').removeClass('is-hidden');
  // 选中非「全部」选项时,隐藏不匹配分类的内容
  if (targetCategory !== 'widgets') {
    $('.result-content').not(`.${targetCategory}`).addClass('is-hidden');
  }
})

HTML代码

原有结构基本无需调整,仅把a标签的href属性改为javascript:;,避免点击时触发页面跳转到顶部:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<a href="javascript:;" class="tab-link" data-div="widgets">All widgets</a>
<a href="javascript:;" class="tab-link" data-div="green-widgets">Green</a>
<a href="javascript:;" class="tab-link" data-div="red-widgets">Red</a>
<a href="javascript:;" class="tab-link" data-div="blue-widgets">Blue</a>

<div class="widgets green-widgets result-content">
  Widget 654
</div>
<div class="widgets green-widgets result-content">
  Widget 989
</div>
<div class="widgets green-widgets result-content">
  Widget 345
</div>
<div class="widgets red-widgets result-content">
  Widget 563
</div>
<div class="widgets red-widgets result-content">
  Widget 867
</div>
<div class="widgets blue-widgets result-content">
  Widget 994
</div>
<div class="widgets blue-widgets result-content">
  Widget 924
</div>
<div class="widgets blue-widgets result-content">
  Widget 114
</div>

方案说明

  • 初始无任何硬编码的隐藏规则,所有内容默认渲染展示,搜索引擎可完整抓取全部内容,无SEO风险
  • 隐藏逻辑通过独立工具类实现,和业务类名解耦,后续扩展分类、调整样式都不需要修改核心逻辑
  • 增加了筛选项的选中态反馈,同时修复了原代码点击筛选标签页面跳回顶部的体验问题
  • 代码轻量化,无额外依赖,兼容所有主流浏览器

内容的提问来源于stack exchange,提问作者Mikedefieslife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:12:14