jquery scrollTop只在ASP.NET转发器中工作一次

时间:2013-12-21 02:18:33

标签: javascript jquery asp.net scroll repeater

我有一个奇怪的问题,我在ASP.NET中打开带有转发器的RadWindow,我想滚动转发器项目,因为用户按下箭头。

代码:

function isScrolledIntoView(elem) {
            var docViewTop;
            var docViewBottom;
            var elemTop;
            var elemBottom;

            try {
                docViewTop = $(window).scrollTop();
                docViewBottom = docViewTop + $(window).height();

                elemTop = $(elem).offset().top;
                elemBottom = elemTop + $(elem).height();
            } catch(err) {
                return true;
            }
            return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
        }


        function ScrollViewTo(element){
            $('#myRepeater').animate({ scrollTop: $(element).height()}, 'fast');
        };

另一个JS函数调用上面的函数(捕获按键时):

if (!isScrolledIntoView(selectedEntry)) {
                ScrollViewTo(selectedEntry);
            }

...其中selectedEntry是我要滚动到的next()元素。

逻辑是,当使用箭头时,它会检查请求的(下一个)元素是否在视野之外。如果是,请滚动到它。如果文件夹中的元素不在窗口中,就像Windows资源管理器一样滚动。奇怪的是,它只适用于第一个卷轴;后续按键正确输入方法并调用ScrollViewTo,但实际上不滚动。我检查了调试器中的所有内容,并且所有值都正确显示。

我非常难过这个,花了相当长的时间在它上面 - 有什么我想念的吗? 感谢

1 个答案:

答案 0 :(得分:0)

我有一个时刻,发现了这个错误。

        window.alreadyScrolled = 0;

        function ScrollViewTo(element) {
            window.alreadyScrolled += $(element).height();
            $('#myRepeater').animate({ scrollTop: alreadyScrolled}, 'fast');
        };

问题是该值始终与上次相同,并且不会增加滚动。它工作正常,我只需要阅读scrollTo。