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

如何通过jQuery/JavaScript实现点击导航选项动态切换对应内容

导航点击动态切换内容实现方案

直接按以下步骤修改代码即可,原有下拉菜单hover交互完全不受影响:

修改点1:给内容容器加唯一标识

找到原来的静态内容区块,给它加id="contentArea"方便脚本定位:

<div id="contentArea" style="padding:0 16px">
  <h3>Subnav/dropdown menu inside a Navigation Bar</h3>
  <p>Hover over the "about", "services" or "partners" link to see the sub navigation menu.</p>
</div>

修改点2:添加交互脚本

把以下脚本放在</body>标签前即可,不需要引入额外第三方库,用原生JavaScript实现:

// 定位内容展示容器
const contentBox = document.getElementById('contentArea');
// 选中所有可点击的导航项:包含一级导航、下拉子菜单、下拉父按钮
const navItems = document.querySelectorAll('.navbar a, .subnav .subnavbtn');

navItems.forEach(item => {
  item.addEventListener('click', function(e) {
    // 阻止a标签默认的锚点跳转行为
    e.preventDefault();
    // 提取当前点击的导航名称,自动过滤下拉箭头等多余字符
    const navName = this.textContent.trim().split(/\s+/)[0];
    // 动态替换内容区文本
    contentBox.innerHTML = `
      <h3>你已点击「${navName}」</h3>
      <p>当前为${navName}对应的内容区块,可根据业务需求替换为任意文本、组件或异步加载的数据。</p>
    `;
  })
})

可选扩展(自定义各导航独立内容)

如果不需要统一的提示模板,要给每个导航配置完全不同的内容,可以用映射表的方式实现,示例:

// 提前配置各导航锚点对应的内容
const contentMap = {
  '#home': '<h3>首页</h3><p>欢迎访问站点首页</p>',
  '#company': '<h3>公司介绍</h3><p>我们成立于20xx年,主营xxx业务</p>',
  '#team': '<h3>团队介绍</h3><p>团队成员均来自行业头部公司</p>',
  '#contact': '<h3>联系我们</h3><p>邮箱:xxx@xxx.com</p>'
  // 其余导航项按相同格式补充即可
};

// 修改点击时的渲染逻辑
navItems.forEach(item => {
  item.addEventListener('click', function(e) {
    e.preventDefault();
    // 只有a标签有hash属性,下拉按钮点击时可以单独处理
    const targetHash = this.hash;
    if(targetHash && contentMap[targetHash]) {
      contentBox.innerHTML = contentMap[targetHash];
    }else {
      const navName = this.textContent.trim().split(/\s+/)[0];
      contentBox.innerHTML = `<h3>你已点击「${navName}」</h3><p>该板块内容待补充</p>`;
    }
  })
})

jQuery版本实现

如果项目里已经引入了jQuery,可以用更简洁的写法实现相同效果:

$(function() {
  $('.navbar a, .subnav .subnavbtn').click(function(e) {
    e.preventDefault();
    const navName = $(this).text().trim().split(/\s+/)[0];
    $('#contentArea').html(`
      <h3>你已点击「${navName}」</h3>
      <p>当前为${navName}对应的内容区块,可根据业务需求替换为任意文本、组件或异步加载的数据。</p>
    `)
  })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:42:28