当前位置: 首页 > 知识库问答 >
问题:

jQuery滚动到可滚动div循环中元素的顶部

贺宝
2023-03-14

我正忙着建立一个页面,在那里,比赛的计分室将能够看到现场结果,因为评委们会为每个参赛作品打分。

除此之外(每10秒检查一次更新),还有一个功能可以检查舞台上的当前条目(用绿色标记),这将滚动计分室的块,以始终在页面顶部显示当前条目。

然而,这创造了一个无休止的循环上下滚动的整个时间。

初始滚动工作正常,但由于当前项的位置已更改,jQuery再次向下滚动,使该项现在处于新的偏移量。

我的代码当前如下所示:

这将在需要时调用函数

$('#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);
 }

使用new_timeold_time,这样当用户手动滚动时,此功能不会自动滚动10秒以上。这一部分是有效的,因此可以忽略这一点。

我试过使用。position()而不是。offset()但我得到了相同的结果。

我还尝试使用获取包含div的当前滚动位置

$('.current_section').animate.scrollTop();

然后使用舞台上当前条目的当前位置来计算正确的滚动点,但无济于事。

理想情况下,当自动滚动时,我希望滚动项位于包含div顶部的位置100。

当时的想法是,这将在活动中出现在电视或大屏幕上,只用于监控分数,以检查一切是否正常,这就是为什么必须自动滚动的原因。

如果我错过了一些简单的东西,请告诉我。

提前谢谢。

共有1个答案

申屠秦斩
2023-03-14

我设法让它工作得很好!

我在这个线程中使用了答案,以帮助获得我的最终工作代码:
如何滚动到溢出Div中的元素?

我的最终代码是这样的:

$.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);
  }
}

希望这能帮助任何有类似问题的人。

 类似资料:
  • 问题内容: 我有这个元素: 然后,我还有其他一些元素,例如其他文本输入,文本区域等。 当用户点击带,页面应该滚动到页面的最后一个元素与一个漂亮的动画。它应该是滚动到底部而不是顶部。 页面的最后一项是带有的按钮: 动画不应太快并且应该流畅。 我正在运行最新的jQuery版本。我更喜欢不安装任何插件,而是使用默认的jQuery功能来实现此目的。 问题答案: 假设您有一个ID为的按钮,请尝试以下示例:

  • 问题内容: 我正在制作一个FAQ页面,顶部有一些按钮可以跳转到一个类别(它跳转到我用作类别标签的标签,例如,用于我的常规类别)。我想添加一个滚动效果,而不仅仅是跳到该类别。我想要类似http://www.dynamicdrive.com/dynamicindex3/scrolltop.htm的内容,该内容可以滚动到页面的所需部分。该链接是一个脚本,该脚本转到页面顶部,具有良好的滚动效果。我需要类似

  • 我正在使用AngularJS开发一个小型web应用程序,遇到了一个问题。我正在使用填充div内部的列表。div有一个固定的高度,并设置为,这意味着当列表对于div来说太大时会出现一个滚动条。我的问题是,当重新绘制列表时,即支持ng repeat的数据会发生变化,滚动条不会重置为div的顶部。相反,它会保持在ng repeat更改之前滚动条所在的任何位置。这是一个非常糟糕的用户体验。我尝试了以下方法

  • 问题内容: 我有一个滚动条,当我单击它时我想要一个链接,它将迫使其滚动以查看其中的元素。我这样写它的JavasSript: 但这会在滚动页面的同时滚动所有页面。如何解决? 我想这样说 问题答案: 您需要获取要滚动到视图中的元素相对于其父元素(滚动div容器)的顶部偏移量: 现在,将变量topPos设置为滚动div的顶部与希望显示的元素之间的距离(以像素为单位)。 现在,我们告诉div使用以下命令滚

  • 问题内容: 我在使用jquery和附加到锚元素的click事件时遇到问题。[1]:jQuery超链接- href值?“这个” SO问题似乎是重复的,并且可接受的答案似乎并不能解决问题。对不起,这是不好的礼节。 在我的.ready()函数中,我有: 我的锚点看起来像这样: 但是当单击链接时,将按需执行ajax功能,但是浏览器滚动到页面顶部。不好。 我尝试添加: 在调用执行ajax的函数之前,但这无济

  • 我试图在jquery mobile Iscroll中使用scroll to element函数,但它不起作用 这就是我的脚本的样子 我在这里尝试了MyJSFIDLE