Я написал код, который сдвигает ползунок, и я хочу улучшить его, чтобы, пока пользователь удерживал щелчок, он продолжал смещаться. Я написал этот код, используя различные вопросы на этом сайте. Моя проблема в том, что он попадает в бесконечный цикл.
// The right button in the slidebar moves it to the right
var mouseStillDown = false;
function shiftToRight() {
if (!mouseStillDown) { return; }
var cur = ($('#slideBar').position().left - $('#leftButton').outerWidth()) - $('.ingredient').outerWidth();
// Checks if movement will cause the slidebar out of right edge
if ($('#fixedPart').outerWidth() - cur > $('#slideBar').outerWidth()) {
cur = $('#fixedPart').outerWidth() - $('#slideBar').outerWidth();
}
$('#slideBar').animate({ left: cur}, { duration: 500 , easing: "swing" } );
if (mouseStillDown) { setTimeout(shiftToRight(), 500); }
};
$('#rightButton').mousedown(function() {
mouseStillDown = true;
shiftToRight();
}).mouseup(function() {
clearInterval(mouseStillDown);
mouseStillDown = false;
});
Я также пробовал setInterval(shiftToRight(), 500)
, но результат был тот же. кажется, что изменение флага в mouseup()
не читается функцией.
clearInterval
не принимает логическое значение в качестве входных данных. - person Danny   schedule 20.02.2014clearInterval
, это не помогло. Как это должно выглядеть? - person Pooya   schedule 20.02.2014