DMsWeb
@DMsWeb
Front-end developer, Web designer

Как отменить выполнение функции js/jquery?

Делаю закрытие модального окна lightcase свайпом вверх для мобилок, отслеживаю когда окно открывается, и когда закрываться. Суть в том чтобы выполнять функцию с отслеживанием свайпа когда окно открыто, а когда окно закрылось -> или удалить функцию свайпа или отключить. Слышал о коллбеках в js, может они могут помочь?

Когда кликаю по миниатюре открывается окно. Когда свайпаешь, функция все равно продолжает выполняться..

// Close lightcase on swipe funtion

jQuery(document).ready(function() {
    $(".item img").on('click', function(event) {

        console.log("open");

            document.addEventListener('touchstart', handleTouchStart, false);        
            document.addEventListener('touchmove', handleTouchMove, false);
            
            var xDown = null;                                                        
            var yDown = null;  

            function handleTouchStart(evt) {                                         
                xDown = evt.touches[0].clientX;                                      
                yDown = evt.touches[0].clientY;                                      
            }; 

            function handleTouchMove(evt) {
                if ( ! xDown || ! yDown ) {
                    return;
                }
                var xUp = evt.touches[0].clientX;                                    
                var yUp = evt.touches[0].clientY;
                var xDiff = xDown - xUp;
                var yDiff = yDown - yUp;

                if ( Math.abs( xDiff ) > Math.abs( yDiff ) ) {
                    if ( xDiff > 0 ) {  // Свайп в лево
                        // Не использую, не мешает
                    } else { // Свайп в право
                        // Не использую, не мешает
                    }                       
                } else {
                    if ( yDiff > 0 ) { // Свайп вверх
                        lightcase.close();
                        console.log("close");
                        callback();
                        // Даже когда lightcase закрыта, эта if выполняеться, в результате чего сайт стробит. Если бы сдесь венуться на функцию клика, чтобы это все не выполнялось пока не кликнут снова
                    } else { 
                        lightcase.close(); // Свайп вниз
                        console.log("close");
                        callback();
                        // Даже когда lightcase закрыта, эта if выполняеться, в результате чего сайт стробит. Если бы сдесь венуться на функцию клика, чтобы это все не выполнялось пока не кликнут снова
                    }                                                            
                }

                xDown = null;
                yDown = null;                                             
            };
    });
});
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы