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

如何用jQuery基于目标元素聚焦设置导航链接的active类?

实现基于div聚焦状态同步导航active类

你只需要给所有.section元素绑定focus事件,当div获得焦点时,自动匹配对应的导航链接并切换active类,具体实现如下:

新增核心逻辑

在现有脚本末尾添加这段代码:

// 监听section的聚焦事件,同步导航active状态
$(".carousel .content .section").on('focus', function() {
    // 获取当前聚焦div的id
    const targetId = '#' + $(this).attr('id');
    // 移除所有导航链接的active类
    $(".carousel nav a.active").removeClass("active");
    // 找到对应href的导航链接并添加active类
    $(`.carousel nav a[href="${targetId}"]`).addClass("active");
});

补充说明

  • 这段代码会在任何.section元素获得焦点时触发,包括Tab键切换、移动端滑动聚焦,或者点击导航时的target.focus()操作
  • 原有点击事件的逻辑可以简化,因为点击导航触发target.focus()后,上面的聚焦逻辑会自动给对应导航链接加active类,简化后的点击事件代码如下:
$(".carousel nav a").click(function (event) {
    event.preventDefault(); 
    var target = $($(this).attr('href'));
    target.focus();
});
  • 如果你的滑动切换插件不会自动给目标div设置焦点,可以在滑动完成的回调里手动调用$(target).focus(),确保导航状态能同步

修改后的完整脚本

$('.carousel nav ul li').each(function(i, e) {
    $(this).wrapInner($('<a>', {
        "href": "#" + "slide-" + i
    }));
});

$(".carousel .content .section").each(function(i, e) {
    $(this).attr("id", "slide-" + i).addClass("collapsed").attr("tabindex","0");
});

$(".carousel nav ul li a").eq(0).addClass("active");

$(".carousel nav a").click(function (event) {
    event.preventDefault(); 
    var target = $($(this).attr('href'));
    target.focus();
});

// 新增的聚焦同步逻辑
$(".carousel .content .section").on('focus', function() {
    const targetId = '#' + $(this).attr('id');
    $(".carousel nav a.active").removeClass("active");
    $(`.carousel nav a[href="${targetId}"]`).addClass("active");
});

这样不管是通过点击导航、Tab键切换还是滑动到div,导航的active状态都会和当前聚焦的div保持同步,完美适配键盘和移动端用户的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:02:47