您上面的代码不起作用,因为 JavaScript 不是多线程的。也就是说,您的 while 循环正在消耗 CPU 并可能阻止其他代码运行(即 mouseup 事件)。
我不久前做过类似的事情。请随时查看我的博客文章。
另外,不确定您是否这样做,但请确保将所有 JavaScript 代码放在 jQuery 的 ready() 函数中;否则,jQuery 可能找不到#scUp 元素。
这是我旧博客文章中的相关代码:
var scrollTimer;
function scrollContent(amt)
{
$("#content").scrollTop($("#content").scrollTop()+amt);
scrollTimer = window.setTimeout("scrollContent(" + amt + ")", 25);
}
$(document).ready(function ()
{
$("#content").css("overflow", "hidden");
$("#scrollUp").mousedown(function() {
window.clearTimeout(scrollTimer); //Not necessary, but just to be sure...
$("#scrollUp").animate({"opacity": 100}, 'fast');
scrollContent(-10);
});
$("#scrollUp").mouseup(function() {
window.clearTimeout(scrollTimer);
$("#scrollUp").animate({"opacity": 0}, 'fast');
});
$("#scrollDown").mousedown(function() {
window.clearTimeout(scrollTimer); //Not necessary, but just to be sure...
$("#scrollDown").animate({"opacity": 100}, 'fast');
scrollContent(10);
});
$("#scrollDown").mouseup(function() {
window.clearTimeout(scrollTimer);
$("#scrollDown").animate({"opacity": 0}, 'fast');
});
//$("#scrollUp").css("opacity", 0); //Alternative
$("#scrollUp").animate({"opacity": 0}, 'slow');
$("#scrollDown").animate({"opacity": 0}, 'slow');
});
...以及链接:
http ://blake-miner.blogspot.com/2010/08/javascript-sticky-footer-and-scroll.html
希望这可以帮助!