我想在滾動結束後立即調用一個函數。我曾嘗試不同的東西,沒有一個是有相當工作了負載,然後我在SO臨到這個解決方案:如何在滾動結束後調用函數?
How do I know when I've stopped scrolling Javascript
我參加了一個很好看的第二個答案,試了一下 - 有用。然後,我試圖稍微改變它爲我的目的。所以現在整個shebang看起來像這樣:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Do something after scroll ends</title>
<style type="text/css">
#scrollableDiv{
width:500px;
height:100px;
overflow:scroll;
}
#someContent{
width:600px;
height:200px;
}
</style>
<script type="text/javascript" src="scripts/jquery-1.5.1-min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#scrollableDiv').bind('scroll', bodyScroll);
var scrollTimer = -1;
function bodyScroll() {
console.log('scrolling.');
if (scrollTimer != -1)
clearTimeout(scrollTimer);
scrollTimer = window.setTimeout('scrollEnded()', 500);
};
function scrollEnded(){
console.log('scrollEnded. Now do something astounding.');
};
});
</script>
</head>
<body>
<div id="scrollableDiv">
<div id="someContent">
Scroll me.
</div>
</div>
</body>
</html>
當我運行這個,滾動事件觸發器(很棒!)。
然後,不是調用我的「scrollEnded()」函數,而是產生一個錯誤:「scrollEnded未定義」。我試圖通過進入調試模式並逐步完成腳本來弄清楚這是從哪裏來的,但後來我發現了一個「匿名函數」 - 這是我對目前對這個問題的理解的極限。我試着將scrollEnded()函數移到頂端。我試過各種各樣的東西...
我該怎麼做才能做到這一點? (可以這個東西有用嗎?)
請勿將字符串傳遞給'setTimeout'和'setInterval'。這是變相的「評估」,每次你評估的時候,忍者都會殺死一隻可愛的小動物。 – 2011-04-01 15:38:14