Chrome Issue:
Вы использовали класс no-select
для предотвращения выделения событий перетаскивания мышью. Структура вашего документа:
<div><!-- Main container -->
<table>...</table><!-- Grid -->
<img><!-- Draggables -->
</div>
Вы поместили свой класс no-select
на свой стол, который не затронул ваши перетаскиваемые изображения. Из-за случайного поведения браузера, когда вы перемещали контейнер, перетаскивая сетку, был создан невидимый выбор. Когда вы начали перетаскивать второй раз, вы фактически начали перетаскивать выбранный контент, что привело к запуску перетаскивания при наведении мыши.
Решение: Поместите свой класс no-select
в свой контейнерный блок вместо сетки таблицы.
Примечание: Пользовательский интерфейс jQuery имеет собственную недокументированную служебную функцию, вместо использования класса no-select
вы можете просто позвонить $('div').disableSelection();
.
IE выпуск:
Существует известная проблема с jQuery UI 1.7+, которая до сих пор не устранена и затрагивает вложенные перетаскиваемые объекты в Internet Explorer. См. отчет об ошибке . ОБНОВЛЕНИЕ: эта ошибка была исправлена в jQuery UI 1.8.16.
Проблема в основном в том, что под IE события перетаскивания всплывают на DOM, даже если они обрабатываются. Обходной путь, предложенный в комментариях, состоит в том, чтобы вручную отменить всплывающее событие события mousedown на внутренних перетаскиваемых объектах (в вашем случае это перетаскиваемые изображения):
$('img').mousedown(function(e) {
if($.browser.msie) {
e.stopPropagation();
}
});
Это всего лишь взлом, пока он не будет исправлен, надеюсь, в jQuery UI 1.9.
Проблема IE9: Обратите также внимание, что в IE9 ни одна из ваших перетаскиваемых функций не работает по какой-то странной причине.