我有一種感覺什麼曾經給我的問題,我試圖找到一個解決方案在這個問題 - 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
「不起作用」不是很具描述性。描述_精確_發生了什麼,以及它與你的希望和夢想有什麼不同! –