Javascript jQuery滚动到可滚动div循环中元素的顶部
我正忙着建立一个页面,在那里,比赛的计分室将能够看到现场结果,因为评委们会为每个参赛作品打分 除此之外,每10秒检查一次更新,还有一个功能,用于检查舞台上标记为绿色的当前条目,这将滚动计分室的块以始终在页面顶部显示当前条目 然而,这会创建一个无止境的循环,在整个时间内上下滚动 初始滚动工作正常,但由于当前项的位置已更改,jQuery再次向下滚动,使该项现在处于新的偏移量 我的代码当前如下所示:Javascript jQuery滚动到可滚动div循环中元素的顶部,javascript,jquery,Javascript,Jquery,我正忙着建立一个页面,在那里,比赛的计分室将能够看到现场结果,因为评委们会为每个参赛作品打分 除此之外,每10秒检查一次更新,还有一个功能,用于检查舞台上标记为绿色的当前条目,这将滚动计分室的块以始终在页面顶部显示当前条目 然而,这会创建一个无止境的循环,在整个时间内上下滚动 初始滚动工作正常,但由于当前项的位置已更改,jQuery再次向下滚动,使该项现在处于新的偏移量 我的代码当前如下所示: $.fn.scrollView = function () { var parentDiv
$.fn.scrollView = function () {
var parentDiv = $('.current_section');
var innerListItem = $(this);
var offset = 140;
//check if sure scrolled more than 10 seconds ago
var new_time = new Date();
var old_time = new Date(last_scrolled);
if (new_time - old_time > 10000 || last_scrolled == '') {
$('.current_section').animate({
scrollTop: parentDiv.scrollTop() + innerListItem.position().top - offset
}, 1000);
}
}
这将在需要时调用函数:
$('#entry_'+curr_entry).scrollView();
执行实际滚动的功能:
$.fn.scrollView = function () {
var item_top = $(this).offset().top;
var offset = item_top - 100;
//check if sure scrolled more than 10 seconds ago
var new_time = new Date();
var old_time = new Date(last_scrolled);
if (new_time - old_time > 10000 || last_scrolled == '') {
$('.current_section').animate({
scrollTop: offset
}, 1000);
}
使用新的\u时间和旧的\u时间,这样当用户手动滚动时,此功能不会自动滚动10秒以上。
这一部分是有效的,因此可以忽略这一点
可滚动元素的初始大小非常小:
我尝试使用.position而不是.offset,但得到了相同的结果
我还尝试使用获取包含div的当前滚动位置
$('.current_section').animate.scrollTop();
然后使用舞台上当前条目的当前位置来计算正确的滚动点,但无济于事
理想情况下,当自动滚动时,我希望滚动项位于包含div的顶部的位置100
当时的想法是,这将在活动中出现在电视或大屏幕上,只用于监控分数,以检查一切是否正常,这就是为什么必须自动滚动的原因
如果我错过了一些简单的东西,请告诉我
提前谢谢。我设法使它工作正常 我使用此线程中的答案帮助获得最终工作代码: 我的最终代码如下所示:
$.fn.scrollView = function () {
var parentDiv = $('.current_section');
var innerListItem = $(this);
var offset = 140;
//check if sure scrolled more than 10 seconds ago
var new_time = new Date();
var old_time = new Date(last_scrolled);
if (new_time - old_time > 10000 || last_scrolled == '') {
$('.current_section').animate({
scrollTop: parentDiv.scrollTop() + innerListItem.position().top - offset
}, 1000);
}
}
希望这能帮助任何有类似问题的人。为什么不留下理由就投否决票?