Мне надоело пытаться закрыть карусель 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;
};
});
});
});