Перетаскиваемая проблема 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