jquery ui 1.8.16 и firefox 6 - сортировка не работает должным образом - PullRequest
1 голос
/ 29 августа 2011

Когда я разрабатывал приложение с jQuery (последняя версия), мой браузер Firefox решил обновить себя до версии 6. Сразу после этого я получил, что стандартная «сортируемая» функция jquery ui не работает должным образом. Я попробовал на сайте JQuery и то же самое. Пробовал с демонстрационными файлами, загруженными с пакетом jquery ui => тот же результат. Нет хаков, нет привычки, только ваниль.

Вот признаки: начиная сортировку (щелкая и перетаскивая мышь), сортируемый элемент привязывается к указателю мыши. Хорошо, пока нет. Но при отпускании левой кнопки мыши сортируемый элемент падает в свою конечную позицию, и внезапно, когда я перемещаю мышь в другое место (без нажатия кнопок мыши), последний отсортированный элемент прилипает к мыши и перемещается вместе с указателем.

Нажатие где-нибудь на странице перемещает сортируемый элемент обратно в конечную опущенную позицию, но как только я снова перемещаю мышь, этот элемент снова залипает и не падает.

Кто-нибудь сталкивался с таким багом с Firefox 6?

К вашему сведению, эта сортируемая функция работала как шарм на FF 5.0

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Хорошо, ребята! Я нашел причину такого странного поведения !!! Его название - «FireQuery 1.0» для Firefox.

Когда я увидел, что Гунтрам говорит мне, что он использует FF6 с последней версией jQuery + jQuery-UI вообще без проблем, я подумал, может ли это быть из-за аддона. Поэтому я отключил все и повторно активировал их один за другим, перезапуская после каждого включения. Я нашел виновный аддон: FireQuery 1.0.

Не говорю, что этот аддон не очень хорош, но, по крайней мере, если вы когда-нибудь столкнетесь с той же проблемой, что и моя, по крайней мере, теперь вы можете знать причину. ;)

0 голосов
/ 11 июня 2012

У меня такая же проблема.После однодневного тестирования я выяснил, в чем проблема и что вызывает такое поведение.

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

-----------
| Header  |
-----------
|         |
|Contents |
-----------

Заголовок перетаскивается.Если вы быстро или ошибочно перемещаете курсор мыши при перетаскивании и курсор мыши каким-то образом перемещается из заголовка (например, на содержимое), div вставляет курсор.

Чтобы снова прикрепить div на страницу, вы можете снова быстро переместить курсор и попытаться вернуть его в заголовок.Затем кажется, что события повторно присоединены, и вы можете поместить div обратно на страницу.

Подводя итог, мышь сдвигает div с прикрепленными сортируемыми событиями, поэтому объект не видитсобытия mouseup или click, которые возвращают объект на страницу.

К сожалению, я не знаю, как это исправить.

EDIT

Мы внедрили решение, которое работает для нас, но не может быть идеальным для всех.Просто .trigger("mouseup") для перетаскиваемого элемента, когда происходит событие щелчка для любого элемента, который не должен быть перетаскиваемым.Это вернет перетаскиваемый элемент обратно на страницу.

0 голосов
/ 29 августа 2011

мне сортировка работает хорошо. элементы не двигаются неожиданно.

когда у меня есть элемент в элементе, например кнопка или текстовое поле, ничего не происходит. если я щелкну правой кнопкой мыши в поле или на кнопке, появится курсор (кнопка нажата). и когда я выхожу из меню настроек Windows правой кнопкой мыши, я могу ввести в текстовое поле ...

так все же странное поведение. я не знаю, как это работает на ff5, я на ff6, последняя версия jquery.

EDIT:

после того, как я нашел это: http://weblogs.asp.net/jeffwids/archive/2011/01/31/jquery-textbox-in-sortable-is-not-clickable-selectable.aspx я более внимательно посмотрел на опцию отмены, предоставляемую jquery-sortable.

я наконец-то смог решить это так:

<ul id="sortable">
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><input type="text" value="text" ></input></li>
    <li class="ui-state-default" style="height: 70px;"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><textarea cols="20" rows="3">textarea</textarea></li>
    <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span><button>button</button></li>
</ul>
<script>
        // initialize the sortable including the cancel option
        $( "#sortable" ).sortable({cancel: 'input,button,textarea'});
</script>
...