鼠标移开之后,自动切换默认是之前的,并不是鼠标之后的下一位

来源:3-3 bug解决及定时器优化

Hakuna_Matata

2015-07-20 16:30

jQuery(document).ready(function() {
    var t = $(".dox li"),
        b = $(".dox div");
    var index = 0;
    var timer = null;
    // if (t.length != b.length) return;
    for (var i = 0; i < t.length; i++) {
        t[i].id = i;
        $(t[i]).mouseover(function() {
            var that = this;
            clearInterval(timer);
            timer = setTimeout(function() {
                for (var j = 0; j < b.length; j++) {
                    b.css("display", "none");
                    t.removeClass();
                };
                $(that).addClass('hover');
                $(b[that.id]).css("display", "block");
            }, 150);

        });
        $(t[i]).mouseout(function() {
            timer = setInterval(function() {
                index++;
                if (index >= t.length) {
                    index = 0;
                }
                for (var j = 0; j < b.length; j++) {
                    b.css("display", "none");
                    t.removeClass();
                };
                $(t[index]).addClass('hover');
                $(b[index]).css("display", "block");
            }, 2000);
        });
    };
    if (timer) {
        clearInterval(timer);
        timer = null;
    }
    timer = setInterval(function() {
        index++;
        if (index >= t.length) {
            index = 0;
        }
        for (var j = 0; j < b.length; j++) {
            b.css("display", "none");
            t.removeClass();
        };
        $(t[index]).addClass('hover');
        $(b[index]).css("display", "block");
        console.log(index);
    }, 2000);
});

写回答 关注

1回答

  • 小面包爱吃饭
    2016-02-19 15:40:48
    已采纳
     $(t[i]).mouseover(function() {
                var that = this;
                clearInterval(timer);
                timer = setTimeout(function() {
                    for (var j = 0; j < b.length; j++) {
                        b.css("display", "none");
                        t.removeClass();
                    };
                    $(that).addClass('hover');
                    $(b[that.id]).css("display", "block");
                    index = that.id;
                }, 150);

    鼠标划过标签的时候并没有修改index的值,这样当鼠标离开当前标签后index的值是上次自动播放的index+1。解决办法是在鼠标划过标签后,把index的值修改为标签的id值,这样下次自动播放时就会从划过标签的下一个标签开始。代码如上,添加的代码在倒数第二行。

    Hakuna...

    非常感谢!

    2016-02-26 10:17:00

    共 1 条回复 >

Tab选项卡切换效果

本课程详细介绍网页页面中最流行常用的tab切换效果

65469 学习 · 533 问题

查看课程

相似问题