Ваш код выше не работает, потому что JavaScript не многопоточный.То есть ваш цикл while потребляет процессор и, вероятно, не позволяет запускать другой код (например, событие mouseup).
Я сделал что-то подобное не так давно.Пожалуйста, не стесняйтесь проверить мой пост в блоге.
Кроме того, не уверен, делаете ли вы это или нет, но убедитесь, что вы поместили весь свой код JavaScript в функцию ready () jQuery;в противном случае 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
Надеюсь, это поможет!