我有一种感觉什么曾经给我的问题,我试图找到一个解决方案在这个问题 - Can't trigger a jquery function with scroll on a particular div - 可能负责滚动相关的问题在这里。.scrollTop(0)不工作让一个div滚动到顶部
短版:无法获得此,或任何类似,工作
$("#Container3").scrollTop(0);
什么也没有发生真正的,没有错误在控制台,没有怪异的行为,只是似乎忽略了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");
});
#Container3有滚动条,是#内容的直接父。
这是一个功能我还在建设,是这个问题我之前也有过,我使用的是什么,现在来帮助调试这个问题的解决方法:
document.addEventListener('scroll',function(event){
if(event.target.className==='Container'){
var $currentScroll=$(event.target).scrollTop();
console.log($currentScroll);
var $targetId=$(event.target).attr("id");
console.log($targetId);
}
},true);
在此先感谢。
编辑︰我只注意到,如果我把一个$(event.target).scrollTop(0);在滚动距离调试功能结束时,它实际上重置了滚动,所以似乎只要div是event.target,它可以从外部工作,因为在点击功能期间我可能不会适当地选择它。
EDIT2:正好我可以缓存event.targets到变量,并用获得()点击功能我敢肯定,我选择合适的元素,以便它只是留下里面怎么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)都将被忽略。
编辑3:我只想留下一个小小的更新。我已经放弃了我在这里尝试使用类似效果的方法,但不像我试图实现的那样友好。因此,我不再关心这个人,但如果你正在阅读这个问题并且有类似的问题,我已经多次遇到这个问题以达到较小的效果,现在我认为它与position有关:fixed;元素以及scrollTop()是如何处理的,但我没有时间深入研究它,所以祝你好运和神速。
很想看到一个jsfiddle展示问题。 – davidkonrad
标记为:*寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。 ]你的问题要包括一个JS/HTML/CSS代码片段来重现错误(使用最少量的代码)。见[mcve]。 – BSMP
“不起作用”不是很具描述性。描述_精确_发生了什么,以及它与你的希望和梦想有什么不同! –