Тестирование Javascript для имитации перетаскивания для сортируемых списков JQuery UI - PullRequest
12 голосов
/ 19 августа 2011

Я пытаюсь написать некоторые внешние тесты Javascript, которые могут проверить функциональность перетаскивания списка JQuery UI , который я использую в своем веб-приложении. Однако я столкнулся с проблемой, заключающейся в том, что сортируемый список JQuery UI, похоже, не реагирует на симуляцию событий мыши.

Я попробовал несколько методов, чтобы проверить это, но в конце концов я нашел собственный плагин моделирования JQuery , который, кажется, обеспечивает необходимую мне функциональность. Однако, когда я запускаю симуляции, сортируемый список не реагирует на событие перетаскивания, а другие компоненты, такие как Draggable, отвечают.

Все это очень легко продемонстрировать на примере простого моделирования , который я собрал. В этом примере я встроил плагин jquery.simulate, но изменил функцию перетаскивания, чтобы замедлить события, которые он запускает, чтобы вы могли визуально увидеть, что происходит. Как вы увидите, плагин моделирования корректно перемещает элемент списка 1 вниз между пунктами 3 и 4, но когда происходит событие mouseup, элемент просто возвращается в исходное положение, а не переупорядочивает список. Я подозреваю, что должно быть другое событие, которое ищет библиотека пользовательского интерфейса JQuery, но, к сожалению, я не смог его найти.

Пожалуйста, перейдите на http://jsbin.com/efuyef/7/edit#javascript,live, чтобы увидеть пример, когда перетаскивание списка сортировки не удается. Просто обновите страницу, чтобы запустить симуляцию снова.

У кого-нибудь есть идеи, как правильно смоделировать событие перетаскивания в сортируемом списке? Ваша помощь будет оценена.

1 Ответ

20 голосов
/ 24 августа 2011

После долгих поисков в Интернете я не нашел решения этой проблемы, поэтому я пошел дальше и разработал собственное решение.

Проверьте репозиторий Github для моего плагина JQuery jquery.simulate.drag-sortable.js

Если вы обнаружите какие-либо проблемы с этим, пожалуйста, напишите тест, чтобы повторить проблему, и разветвите проект или поднимите проблему в Github.

...