Javascript .scrollTop(0)无法使div滚动到顶部

Javascript .scrollTop(0)无法使div滚动到顶部,javascript,jquery,html,scroll,Javascript,Jquery,Html,Scroll,我有一种感觉,是什么给了我问题,我试图在这个问题上找到一个解决方案——可能是与滚动相关的问题 简短版本:不能让这个或任何类似的东西工作 $("#Container3").scrollTop(0); 实际上什么也没有发生,控制台中没有错误,没有wierd行为,只是似乎忽略了scrollTop(0)请求 长版本:很抱歉,发布代码片段是不可行的,因为它是一个类似于应用程序的复杂界面,但我会尽力解释这个问题: 移动响应网站,根据屏幕的实际情况加载不同的界面 由3个部分组成的最小界面——顶部导航、底部

我有一种感觉,是什么给了我问题,我试图在这个问题上找到一个解决方案——可能是与滚动相关的问题

简短版本:不能让这个或任何类似的东西工作

$("#Container3").scrollTop(0);
实际上什么也没有发生,控制台中没有错误,没有wierd行为,只是似乎忽略了scrollTop(0)请求

长版本:很抱歉,发布代码片段是不可行的,因为它是一个类似于应用程序的复杂界面,但我会尽力解释这个问题:

  • 移动响应网站,根据屏幕的实际情况加载不同的界面
  • 由3个部分组成的最小界面——顶部导航、底部搜索和中间内容。
  • 内容主要在使用期间加载,而不是在页面加载时加载
  • 在按下一个按钮,重新加载一个特定的div的内容,我还需要滚动该div的顶部,以便于使用
  • 虽然它似乎不会影响我的问题(删除它并不能解决问题),但我应该透露,我正在使用hammer.js模拟触摸事件,因为它可能会影响解决方案
加载是在视口外完成的,因此不需要动画,但只要它们能够正常工作,我就会使用它们

这就是我的jquery请求的样子

$(document).on("click",".NavRowButton",function(event){
    $("#Container3").scrollTop(0);
    var $targetButtonId=$(event.target).attr("id");
    $("#Content").load("/load/login/"+$targetButtonId+".php");
    $("#DisplayContentName").html("<span class='NavColSpan'>"+$targetButtonId+"</span>");
    $("#Container3").find(".WindowBorder").css("top","0");
});
提前谢谢

编辑:我刚刚注意到,如果我放入$(event.target).scrollTop(0);在scroll distance调试功能结束时,它实际上会重置滚动,因此,只要div是event.target,它就可以从外部工作,而在单击功能期间,我可能无法正确选择它

Edit2:我刚刚了解到我可以将event.targets缓存到变量中,在click函数中使用.get(),我确信我选择了正确的元素,因此它只保留了scrollTop(0)方法的工作方式

它们现在看起来是这样的(还必须添加一个限制加载事件的条件):

全局变量:

$DivTestVar="";
点击:

$(document).on("click",".NavRowButton",function(event){
    var $targetButtonId=event.target.id;
    if($targetButtonId != $("#DisplayContentName").html()){
        $($DivTestVar).scrollTop(0);
        console.log($($DivTestVar).get());
        $("#Content").load("/load/login/"+$targetButtonId+".php");
        $("#DisplayContentName").html($targetButtonId);
        $("#Container3").find(".WindowBorder").css("top","0");
    };
});
滚动调试:

document.addEventListener('scroll',function(event){
    if(event.target.className==='Container'){
        $DivTestVar=event.target;
        var $currentScroll=$($DivTestVar).scrollTop();
        console.log($currentScroll);
        var $targetId=event.target.id;
        console.log($targetId);
    }
},true);
如果在滚动console.log($($DivTestVar.get())之前单击;返回空,但如果在第一次滚动时开始返回正确的DOM元素。无论如何都会忽略scrollTop(0)


Edit3:我只想留下一个小更新。从那以后,我放弃了我在这里尝试使用的方法,因为它具有类似的效果,但不像我试图实现的那样友好。因此,我个人不再关心这个问题,但如果你正在阅读这篇文章,并且遇到了类似的问题,我已经多次遇到这个问题,但影响较小,我现在认为它与位置有关:已修复;元素以及scrollTop()是如何处理的,但我没有时间深入研究,所以祝你好运,祝你好运。

你尝试过纯JS版本吗

document.getElementById('Container').scrollTop = 0

你试过纯JS版本吗

document.getElementById('Container').scrollTop = 0

据我所知,你有两种可能

1-使用jQuery滚动整个页面,直到它到达
#Content
div位置的顶部


2-您的
#内容
位于一个带有滚动条的div中,滚动条(0)
将用于此功能(例如:)。

据我所知,您有两种可能性

1-使用jQuery滚动整个页面,直到它到达
#Content
div位置的顶部


2-您的
#内容
位于带有scroll的div中,
scrollTop(0)
将适用于此(示例:)。

希望看到JSFIDLE演示此问题。标记:寻求调试帮助的问题(“此代码为什么不工作?”)必须包括所需的行为,一个特定的问题或错误,以及在问题本身中重现它所需的最短代码。-请在您的问题中包含一个JS/HTML/CSS代码段,该代码段可以复制错误(代码量最少)。看,“不起作用”不是很好的描述。准确描述发生了什么,它与你的希望和梦想有什么不同@davidkonrad,对不起,我应该再次提到发布代码是不可行的,因为它是一个如此复杂的接口,我不知道是什么导致了这个问题。有人能够在没有太多信息的情况下为我的另一个问题找到解决方案(可能也发生在他们身上),所以我希望有人也能在这里提供帮助。在任何情况下,我都会用我在另一个问题上的更多细节来编辑这个问题。@LightnessRacesinOrbit Ups是的,我也会将其编辑到问题中。什么也没发生。控制台上没有显示任何内容。没有什么,和我的另一个问题一样,它只是不起作用:|希望看到JSFIDLE演示这个问题。标记:寻求调试帮助的问题(“为什么这个代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。-请在您的问题中包含一个JS/HTML/CSS代码段,该代码段可以复制错误(代码量最少)。看,“不起作用”不是很好的描述。准确描述发生了什么,它与你的希望和梦想有什么不同@davidkonrad,对不起,我应该再次提到发布代码是不可行的,因为它是一个如此复杂的接口,我不知道是什么导致了这个问题。有人能够在没有太多信息的情况下为我的另一个问题找到解决方案(可能也发生在他们身上),所以我希望有人也能在这里提供帮助。在任何情况下,我都会用我在另一个问题上的更多细节来编辑这个问题。@LightnessRacesinOrbit Ups是的,我也会将其编辑到问题中。什么也没发生。控制台上没有显示任何内容。没什么,和我的另一个问题一样,它只是不起作用:|我实际上没有,没有遇到过它,所以我从来没有想过要尝试它。在任何情况下,它也不起作用:|在重新加载div之前尝试使用scrollTop(0)#容器contentTested