PrettyPhoto 触发后,JQuery 滚动不起作用

标签 jquery

您好,我希望有人可以帮助我,我正在使用 jquery 滚动功能以平滑的方式跳转到页面中带有 anchor 的不同部分。我根据滚动位置来做到这一点,这是我开发的代码,效果很好:

// variables for the scroller effect
    var scrollTop;
    var timer;

    // we must be loading step 1, so make the first step the current one.
    $("#controlBtn li:eq(0)").addClass("current");
    $("#controlBtn li:eq(0) h1").show("fast");

    $('#controlBtn li a').click(function () {
        triggerCorrespondingItem();
    });

    $(window).scroll(function () {
        // store scrolling value
        scrollTop = $(window).scrollTop();

        console.log("scroll position: " + scrollTop); // testing

        // set timerfor when window scroller stops
        clearTimeout(timer);
        timer = setTimeout(function () {
            triggerCorrespondingItem();
        }, 250);
    });

    function triggerCorrespondingItem() {
        if (scrollTop >= 0 && scrollTop < 392) {
            // for step 1 "start"
            elem = $('#controlBtn li:eq(0)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(0) h1").show("fast");
                $('#controlBtn li:eq(0)').addClass('current');
            }
        } else if (scrollTop > 725 && scrollTop < 1140) {
            // for step 2 "need"
            elem = $('#controlBtn li:eq(1)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(1) h1").show("fast");
                $('#controlBtn li:eq(1)').addClass('current');
            }
        } else if (scrollTop > 1654 && scrollTop < 2075) {
            // for step 3 "contact"
            elem = $('#controlBtn li:eq(2)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(2) h1").show("fast");
                $('#controlBtn li:eq(2)').addClass('current');
            }
        } else if (scrollTop > 2500 && scrollTop < 2949) {
            // for step 4 "pick-up"
            elem = $('#controlBtn li:eq(3)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(3) h1").show("fast");
                $('#controlBtn li:eq(3)').addClass('current');
            }
        } else if (scrollTop > 3420 && scrollTop < 3870) {
            // for step 5 "pre-production"
            elem = $('#controlBtn li:eq(4)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(4) h1").show("fast");
                $('#controlBtn li:eq(4)').addClass('current');
            }
        } else if (scrollTop > 4275 && scrollTop < 4745) {
            // for step 6 "sacanning"
            elem = $('#controlBtn li:eq(5)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(5) h1").show("fast");
                $('#controlBtn li:eq(5)').addClass('current');
            }
        } else if (scrollTop > 5245 && scrollTop < 5660) {
            // for step 7 "delivery"
            elem = $('#controlBtn li:eq(6)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(6) h1").show("fast");
                $('#controlBtn li:eq(6)').addClass('current');
            }
        } else if (scrollTop > 6092) {
            // for step 8 "resolution"
            elem = $('#controlBtn li:eq(7)');
            if (!elem.hasClass("current")) {
                removingCurrentInstance();
                $("#controlBtn li:eq(7) h1").show("fast");
                $('#controlBtn li:eq(7)').addClass('current');
            }
        } else {
            removingCurrentInstance();
        }
    }

    function removingCurrentInstance() {
        // remove "current" class and hide current label while scrolling
        $('#controlBtn li').removeClass('current');
        $("#controlBtn li h1").hide("fast");
    }

然后我有一个用 Prettyphoto 打开视频灯箱的链接,所以在我打开视频灯箱后,上面的滚动功能不再起作用。

最佳答案

我可以通过将滚动函数包装到新函数中,然后使用 PrettyPhoto 回调参数调用新函数来纠正此问题。

function scrolling(){
    $(window).scroll(function () {
       console.log($(window).scrollTop());
    });
}

  $("a[rel^='prettyPhoto']").prettyPhoto({
    callback: function(){scrolling();}
  });

关于PrettyPhoto 触发后,JQuery 滚动不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859326/

相关文章:

php - 检查动态创建的文本框的值是否不为空

javascript - 如何根据滚动位置在航路点函数内设置不透明度变化动画?

javascript - 使用 javascript 或 jQuery 激活加载时的复选框

jquery - CSS 过渡

javascript - PHP Jquery 选项卡 : content loads into one tab's panel

jquery - 在 HH :MM using jquery 中添加小时数

javascript - 当鼠标不在文本区域内时获取文本区域的值

javascript - 可平移 Canvas 效果

javascript - 无法使用 Cheerio js Node 从 div 标签中抓取文本?

javascript - 如果未加载,如何使用 Javascript 检查和加载 CSS?