Никогда, никогда не помещайте Javascript в «занятый» цикл.Это сделает ваш браузер не отвечающим.
Предполагая, что то, что вы хотите, возможно (я не уверен, что это так, поскольку события, которые начинаются в одном элементе и заканчиваются в другом, хитры), вам нужно что-токак:
function doScroll() {
api.scrollByY(50, false);
}
$('#List').mouseleave(function(ev) {
var timer = null;
if (ev.which) { // if a button is pressed
timer = setInterval(doScroll, 200); // regularly call 'doScroll'
$(document).one('mouseup', function() { // and register a one-off mouseup
clearInterval(timer); // which stops the timer
timer = null;
}
}
});
Примечание: не проверено, может не работать, возможны пропуски и ошибки и т. д.