Я создаю модуль для отзывчивого веб-сайта, который позволяет пользователю нажимать начальный экран и выставлять панель справа. Затем они могут нажать кнопку закрытия и закрыть панель.
Проблема в том, что если пользователь несколько раз ударяет, прежде чем панель завершит анимацию, она применит удвоенное действие, перемещающее панель слишком далеко слева необратимо.
Я новичок в JS и не могу понять, как это решить. Я думал, что это можно сделать с помощью оператора var и if, но он, похоже, не работает.
Я настроил var
pstatus = 1;
Затем я завернул каждое событие в оператор if, но он не работает. Я оставил его без утверждений if, чтобы он работал для проверки.
Любая помощь приветствуется!
http://codepen.io/bsley/pen/kjBcz
На вашем iPhone (Safari) http://codepen.io/bsley/debug/kjBcz
Вы можете создать блокировку javascript:
var lock = false;
$("#MyElement").on("namespace.click", function(){
if(!lock){
lock = true;
//Move Element
lock = false;
}
});
Тем не менее, я бы предложил посмотреть в Underscore.js и использовать метод throttle(): http://underscorejs.org/
Вы можете имитировать это, заменив:
lock = false;
С:
customThrottle();
var timerDuration = //Duration to wait in milliseconds;
function customThrottle(){
setTimeout(function(){
lock = false;
},
timerDuration
);
}
я бы попытался сделать это вот так:
1) при щелчке, происходит слайд.
2) при раздвижении щелчок становится отключенным.
3) при завершении сползания щелчок становится снова включенным.
Я не знаю, как это можно решить из Javascript, но из Objective C, что вы сделали бы, нужно отключить кнопку = YES в методе действий, а затем отключить = NO после завершения анимации.
Я предполагаю, что решение будет похоже на Javascript.