У меня есть довольно простой список горизонтально перемещаемых предметов, например:
<div class="my-widget-container">
<div class="my-widget-column">...</div>
...
</div>
Контейнер и каждый столбец имеют фиксированную ширину, установленную с помощью jQuery's .width()
. Контейнер position: relative
и столбец float: left
и overflow: hidden
. Не уверен, если какие-либо другие стили / свойства имеют отношение.
Когда я применяю jQuery-UI, сортируемый к этому, результат в точности соответствует ожиданиям в Chome 8 и IE 8; столбцы можно перетаскивать, чтобы изменить их порядок. Но в Firefox 3.6 я могу щелкнуть элемент и перетащить, чтобы создать новый помощник по сортировке, но в действительности сортировка никогда не происходит; реальная позиция предмета в DOM никогда не меняется.
Я немного покопался в Sortable и добавил отладочную печать к _intersectsWithPointer
. Всякий раз, когда помощник перетаскивания перемещается, Sortable просматривает свой список элементов и использует этот метод, чтобы определить, прошел ли помощник перетаскивания один. Я увидел, что item.left
имеет одинаковое значение для всех моих столбцов, что, очевидно, неверно и, вероятно, является источником проблемы. Похоже, что все столбцы имели позицию left
, соответствующую позиции первого столбца.
Я использую jQuery 1.4.3 и jQuery UI Sortable 1.8. Это не самые последние версии, но они довольно свежие, и я не вижу в примечаниях к выпуску Sortable ничего, что указывало бы на то, что любая такая проблема была исправлена.
Кто-нибудь знает, что здесь может происходить, или есть идеи для дальнейшей отладки?