Перетаскиваемая проблема JS и JQuery-UI в IE 7 - 8

Я использую Hammer JS и JQuery UI Dragable. При перетаскивании элемента в IE 7 - 8 перетаскиваемый элемент зависает в следующий момент после выполнения перетаскиваемого элемента. Несмотря на то, что я использую плагины для разных целей, они вызывают проблемы. Возможно, это связано с тем, как событие Hammer js связано в IE 7 - 8.

Если я закомментирую прослушиватель событий Hammer js, он будет работать абсолютно нормально.

Hammer JS:

shortlistedProducts.hammer()
                .on('swipe', function (e) {
                    var gestureDirection = e.gesture.direction,
                        productLength = shortList.find('.product').length,
                        nextSlide = (currentThumb + productsInLine) >= productLength ? productLength : currentThumb + productsInLine,
                        prevSlide = (currentThumb - productsInLine) < 0 ? null : currentThumb - productsInLine;


                    if (gestureDirection === 'left') {

                        thisObj.slideAnimationHandler("right", nextSlide === productLength, nextSlide);

                    } else if (gestureDirection === 'right') {

                        thisObj.slideAnimationHandler("left", prevSlide === null, prevSlide);

                    }

                });

JQuery:

product.draggable({
                appendTo: 'body',
                helper: 'clone',
                zIndex: 10010,
                scroll: false
            });

            productContainer.droppable({
                tolerance: 'touch',
                activeClass: "ui-state-default",
                activate: function (event, ui) {

                    if (!shortList.hasClass('visible')) {
                        shortList.animate({ 'bottom': 0 }).removeClass('preview').addClass('visible');
                    }

                },
                deactivate: function (event, ui) {

                    if (!shortlistedProducts.find('.product').length) {
                        shortList.animate({ 'bottom': '-' + shortList.outerHeight() }).removeClass('visible');
                    }
                },
                drop: function (event, ui) {
                    var target = jQuery(this).find('.products'),
                        targetLength = target.children('.product').length;

                    thisObj.shortListHandler(ui.draggable, 'add');

                    thisObj.productCountHandler();
                }
            });

1 ответ

Проблема была с hammer.js. Как только я прокомментировал функцию hammer.js, она заработала хорошо, поэтому я подумал, что если мне удастся остановить выполнение hammer.js в IE 7-8, проблема будет решена. На самом деле жесты не нужны в IE 7-8, поскольку на борту нет сенсорных устройств с IE 7-8. Решением моей проблемы было выполнение функции hammer.js, только если устройство поддерживает жест, который в случае IE 7-8 является ложным.

'ontouchstart' in document.documentElement) || navigator.msMaxTouchPoints > 0
Другие вопросы по тегам