当前位置: 首页 > 面试题库 >

jQuery scrollTop()为所有元素返回0

邹丰羽
2023-03-14
问题内容

在我的工作中,我们有一个使用AngularJS创建的一页站点。
我们正在使用ui-router插件(版本0.2.0)。
最近,我注意到从一种状态切换到另一种状态时,该窗口不会滚动到顶部。
我什至尝试scrollTop()在每次状态更改(使用$stateChangeSuccess事件)时使用jQuery的功能将其手动滚动到顶部。但这没有用。

因此,我开始进行调查,并且注意到scrollTop()页面上的每个元素都返回0。
不仅如此,当我将其打印window.scrollY到控制台时,我得到0(无论我在页面上的什么位置)。不仅在我的代码中,即使我只是在chrome
dev工具控制台中编写它。

我已经使用AngularJS和ui-router编写了多个应用程序,并且仅在此特定应用程序中发生过。

我检查了一下是否覆盖了scrollTop()函数甚至window.scrollY字段,但没有发现任何东西。

我已经尝试过使用ui-viewwith autoscroll="true"autoscroll="false",但是并没有什么不同。

我还尝试提供htmlbody元素height:100%,也尝试不使用。但是什么都没有。

我真的不知道下一步该怎么做。

我无法重现该问题,但是如果您认为有任何我应该在此处发布的代码可能会有所帮助,我会很乐意这样做。

谢谢!

编辑:

我已经在控制台上运行了此功能:

var l = $('*').length;
for(var i = 0; i < l; i++) {
    var elem = $('*:eq(' + i + ')');
    if(elem.scrollTop() > 0) {
        console.log(elem, elem.scrollTop());
    }
}

该函数的顶部滚动条仅打印出一个元素。
元素是一个包装div,其中包含整个内容和主视图(我的应用程序中有嵌套视图)。
如果我scrollTop(0)在这个元素上使用,我会得到想要的,但是它只处理症状,而不是真正的问题。


问题答案:

正如@Hans所说,实际上没有问题。我有一个包装元素,它的位置absolute是:

top:0;
bottom:0;
left:0;
right:0;
overflow:auto

因此,窗口的值scrollTop始终为0,而​​滚动条实际上​​属于包装元素。

由于无法摆脱包装元素的位置,因此我使用了ui-router的$stateChangeSuccess事件,并手动将包装元素滚动到顶部。



 类似资料:
  • 当我使用System.out.println静态方法时,下面的Java程序显示ArrayList中的所有元素。但是,当我在方法中返回列表时,它只显示ArrayList中的一个元素。我希望你能给我一些指点,让我知道你做错了什么:

  • 返回数组中所有 val 的索引。 如果 val 从不出现,则返回 [] 。 使用 Array.forEach() 循环元素和 Array.push() 来存储匹配元素的索引。 返回索引数组。 const indexOfAll = (arr, val) => { const indices = []; arr.forEach((el, i) => el === val && indices.

  • 问题内容: 我正在尝试遍历所有使用forEach 重构的元素。有什么想法为什么在FF,Chrome或IE中不起作用? 问题答案: 您需要使用以下命令将节点列表转换为数组: 或用于循环。 并将ShowResults函数更改为: 为什么我们需要这样做? JavaScript中的某些对象看起来像一个数组,但不是一个。这通常意味着它们具有索引访问和length属性,但是没有任何数组方法。示例包括特殊的变量

  • 请帮我检查数据库属性。 然后,sizeBinding有第一个元素null(用于宽度)和绑定表达式实例(用于高度绑定)。我可以使用Mode=twoway设置绑定,但是我想知道为什么如果Mode没有设置为twoway就不会创建绑定实例。我认为这是因为表达式需要比路径更复杂。但是,我尝试了,但是返回null作为绑定。我尝试了GetBinding*方法,但它们的行为与完全相同。 我谷歌搜索的唯一一个问题就

  • 问题内容: 我想编写一个函数,该函数以字母数组作为参数,并选择多个字母。 假设您提供8个字母的数组,并希望从中选择3个字母。然后您将获得: 返回由3个字母组成的数组(或单词)。 问题答案: 格雷码您会遇到的一个问题当然是记忆力,而且很快,您的集合中会有20个元素出现问题-20 C 3 =1140。而且,如果要遍历集合,最好使用修改后的灰色代码算法,因此您不必将所有代码都保存在内存中。这些将根据之前

  • 这工作正常: 我得到了一个非常好的JSON数组和对象。 现在的问题是,我喜欢将我的数据作为有效载荷放入响应中,以便能够设置标头和状态,或者返回一个错误对象作为有效载荷。但是不管用。 Mai 16,2012 7:00:35 PMorg.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor写响应错误消息警告:未找到响应类ArrayList的消息正文编写器。