Как закрыть модальный Lightcase, проведите - PullRequest
0 голосов
/ 24 января 2020

Мне надоело пытаться закрыть карусель Lightcase внутри модального окна с помощью пролистывания вверх (на мобильном телефоне). Я попытался сделать это, добавив другой код отслеживания (не jquery .events.touch.min. js, использующий плагин Lightcasze для скольжения элементов), но он не работал должным образом, он отслеживает весь документ. Я не мог изменить область отслеживания всего документа только на модальное окно.

В теле появляется стиль lightcase-open, когда модальный виден, и я начал этот код только тогда, когда модальное окно открыто. Не удалось заставить его работать должным образом ...

Может быть, он может работать с jquery .events.touch.min. js .. Или как сделать это лучше?

function addClassNameListener(elemId, callback) {
var elem = document.getElementById(elemId);
var lastClassName = elem.className;
window.setInterval( function() {   
   var className = elem.className;
    if (className !== lastClassName) {
        callback();   
        lastClassName = className;
    }
},10);
}

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

    addClassNameListener("listener", function(){
        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 ) ) {/*most significant*/
                if ( xDiff > 0 ) {
                 // left swipe  
                } else {
                 // right swipe 
                }                       
            } else {
                if ( yDiff > 0 ) {
                    lightcase.close();
                    removeClassNameListener("listener", function(){});
                } else { 
                    lightcase.close();
                    removeClassNameListener("listener", function(){});
                }                                                                 
            }

            xDown = null;
            yDown = null;                                             
        };
    });
});

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...