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

如何实现通过键盘触发jQuery滚动到所选标题的功能

实现方案

你需要补充目标元素标识存储、键盘事件监听两部分逻辑,具体修改如下:

第一步:修改导航列表生成逻辑

给每个目标h2元素添加唯一ID,同时把ID存在导航元素的自定义属性里,用于后续定位:

// 预先给所有无ID的h2生成唯一ID(如果你的h2已经有固定ID可跳过这一段)
jQuery(sections).each(function(index) {
  if(!jQuery(this).attr('id')) {
    jQuery(this).attr('id', 'section-' + index);
  }
});

// 原生成列表逻辑修改
if (jQuery(sections).length > 1) {
  jQuery(sections).each(function() {
    // 新增data-target属性存储对应h2的ID
    sectionList += '<li class="scrollControl"><span class="sectionText" tabindex="0" data-target="' + jQuery(this).attr('id') + '">' + jQuery(this).html() + "</span></li>";
  });
  // 此处保留你原有将sectionList插入页面的逻辑
}

第二步:添加键盘+点击事件监听

统一处理点击和回车触发的滚动逻辑:

jQuery(document).on('click keydown', '.sectionText', function(e) {
  // 匹配点击事件、回车键触发(e.key === 'Enter' 写法兼容性也很好,可替代keyCode判断)
  if(e.type === 'click' || (e.type === 'keydown' && (e.keyCode === 13 || e.key === 'Enter'))) {
    const targetId = jQuery(this).data('target');
    const targetElement = jQuery('#' + targetId);
    if(targetElement.length) {
      // 滚动到对应h2位置,可自行调整滚动参数
      targetElement[0].scrollIntoView({
        behavior: 'smooth', // 不需要平滑滚动改为auto即可
        block: 'start' // 对齐到视口顶部,可选center、end等值
      });
      // 无障碍优化可选:滚动后给目标h2加临时焦点
      targetElement.attr('tabindex', '-1').focus();
    }
  }
});

注意:如果你的项目原有滚动逻辑是用jQuery.scrollTop()实现的,也可以替换掉scrollIntoView部分的代码,保持和原有交互逻辑一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:06:03