【问题标题】:Dot Navigation JQuery Slide Show点导航 JQuery 幻灯片放映
【发布时间】:2026-01-07 04:40:01
【问题描述】:

我对 JQuery 很陌生,我有一个关于点导航的问题...

我有一些我整理的英雄内容(使用来自这里的帖子和 JQuery 站点)。基本上我有 3 个 div 容器,它们被隐藏并在一个循环中显示。我还有其他三个 div 容器,其中包含我想用作导航的点。在循环期间,点会改变颜色以表示页面当前所在的“幻灯片”。

我现在要做的是为每个点添加一个点击事件,以便循环跳转并显示相应的内容。

下面是我的 Java 脚本。

        $('.heroContBG').each(function() {
        $(this).hide(0);
    });
    $('.heroContBG').first().show(0);
    $('.heroDots').last().removeClass('heroNavOff').addClass('heroNavOn');
    var delay = 6000; //Set delay time
    var divIdx = 0; //Set divIdx value
    var arrDiv = $('.heroContBG').toArray(); //Assign all heroContBG divs to array
    var arrDot = $('.heroDots').toArray(); //Assign all heroDots divs to array
    arrDot = arrDot.reverse(); //Reserve array index for Dot Navigation  

    function heroBG(){
        var $out = $(arrDiv[divIdx]); //Set $out variable to current array index (set by divIdx)
        var $dotOut = $(arrDot[divIdx]); //Set dotOut variable to current array index (set by divIdx)
        divIdx = (divIdx + 1) % arrDiv.length; //Convert array index 0-2 into 1-3
        var $in = $(arrDiv[divIdx]); //Set $in to $arrDix[divIdx]
        var $dotIn = $(arrDot[divIdx]); //Set $dotIn to $arrDot[divIdx]
        $out.fadeOut(600).hide(); //Hide element
        $dotOut.removeClass('heroNavOn').addClass('heroNavOff'); //Swap classes on .heroDots
        $in.fadeIn(1600).show(); //Show next element
        $dotIn.removeClass('heroNavOff').addClass('heroNavOn'); //Swap classes on .heroDots
    }
    setInterval(heroBG, delay); //Tell browser to loop through elements.

我认为我需要做的是让点击事件设置 divIdx 值以匹配相应 div 容器的值,但到目前为止我还没有运气。

我会继续玩这个,如果我成功了,我会在这里发布。如果其他人知道如何做到这一点,那就太好了。

我还应该提到,我真的不想使用 3rd 方插件,因为我非常热衷于提高我的 JQuery 技能。

干杯,

西蒙

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    只需使用$('.heroDots').index(myClickedHeroDot) 即可获取目标兄弟的位置。然后将返回的索引值赋值给 divIdx。

    希望这会有所帮助:)

    【讨论】:

    • 您好博士,您能帮我解释一下吗?这必须进入函数内部,我还认为我需要将其放在 IF 中以检查是否单击了点?正如我所说,我对 JQuery 和 Java Script 很陌生。
    • 这是我的最终结果。
    • 我将它添加到我的函数顶部。
    • 'code'$('.heroDots').click(function() { var $out = $(arrDiv[divIdx]); var $dotOut = $(arrDot[divIdx]);divIdx = $(this).index(); if (divIdx == 0){ divIdx = 2;} else if (divIdx == 2){divIdx = 0;} var $in = $(arrDiv[divIdx]); var $dotIn = $(arrDot[divIdx]); $out.fadeOut(100).hide(); $dotOut.removeClass('heroNavOn').addClass('heroNavOff'); $in.fadeIn(300).show( ); $dotIn.removeClass('heroNavOff').addClass('heroNavOn');('索引值' + divIdx); $('.heroDots').unbind("click");});'code'
    最近更新 更多