我有一个奇怪的问题,我在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,但实际上不滚动。我检查了调试器中的所有内容,并且所有值都正确显示。
我非常难过这个,花了相当长的时间在它上面 - 有什么我想念的吗? 感谢
答案 0 :(得分:0)
我有一个时刻,发现了这个错误。
window.alreadyScrolled = 0;
function ScrollViewTo(element) {
window.alreadyScrolled += $(element).height();
$('#myRepeater').animate({ scrollTop: alreadyScrolled}, 'fast');
};
问题是该值始终与上次相同,并且不会增加滚动。它工作正常,我只需要阅读scrollTo。