scrollTo - jQuery插件。滚动很好,但尝试向后滚动是锯齿状的“卡住”

时间:2011-07-14 16:13:53

标签: jquery jquery-ui jquery-plugins jquery-selectors scrollto

我正在使用scrollTo插件并在'click'事件中的animate方法的回调函数中执行它。

页面滚动得很好,但是如果我使用鼠标滚轮或滚动条尝试重新启动,它就不会让我。它只是一种卡住和我打架 - 创造一个跳跃效果。大约一秒钟后,它恢复正常行为。

我无法显示这种情况发生的确切位置(不允许),但我复制了以下代码:

// This function finds the first item that has an opacity set to 1 (full)
function moveIt() {
    var theItem = $('.work').filter( function(j) { return $(this).css('opacity') == 1 } ).eq(0);
    $("html").scrollTo( theItem, 350 );
}

$("#work-menu-client a").click(

    function () {

        var val = $(this).attr("href");
        val = val.substring(1, val.length);

        if( val.length ) { 


            $(".work[data-client*='" + val + "']").animate({
                opacity: 1
                }, 350, function() {    
                    // Complete
            });


            $(".work:not([data-client*='" + val + "'])").animate({
                opacity: 0.05
                }, 350, function() {

                    moveIt();

            });


        }

        return false;

    }, 

    function () {
        return false;   
    }

);

不要担心整个事情的作用,但是将这些代码放入回调函数中是不对的。几乎像它一直循环/重复回调所以我不能回去。

(如果你想知道,基本上,一个菜单允许我根据属性淡入和淡出某些项目,然后我滚动到第一次出现不透明度未被淡出的地方。)

非常感谢任何帮助。

我找到了一个有类似问题的人但是还没有解决,那里的反馈很少:JQUERY, scrollTo, after scrolling down, the page won't let me scroll up for a second... Y?

非常感谢, 迈克尔。

编辑:事实上,我刚刚注意到我无法向下滚动......所以基本上,我被困在它发送给我的位置。

1 个答案:

答案 0 :(得分:3)

我也有这个问题,但错误/修复不是关于选择器逻辑。

问题在于我将点击处理程序绑定到不止一次触发scrollTo的锚点上,而没有解除旧的绑定。我正在实现ajax加载和重新注册事件处理程序,但没有取消注册旧的。修复只涉及对$(selector).off() before $(selector).on(...)的调用,我没有必要改变,因为这是我仍然想要的行为。