Устранение проблемы с сортируемыми вкладками Jquery

Я собрал демонстрацию проблемы.

В основном неправильная вкладка удаляется после сортировки. Не всякая сортировка создает проблему, поэтому следуйте моему примеру в разделе JSFiddle JavaScript. У меня есть два примера смешного бизнеса:

http://jsfiddle.net/GM9BQ/ (довольно длинная демонстрация)

http://jsfiddle.net/GM9BQ/7/ (значительно сокращено)

http://jsfiddle.net/GM9BQ/13/ (то же, что и 7 (выше), но удаляет вкладку используя href)

Оба показывают разные проблемы.

Это было проблемой уже целую вечность, и я вижу проблему и в грядущем выпуске 1.9.

Так что, если кто-то может помочь решить эту проблему, я был бы очень признателен.

p.s. Я также сделал сообщение на форуме jquery.

http://forum.jquery.com/topic/jquery-tabs-wrong-tab-removed-after-sorting


person HGPB    schedule 31.08.2011    source источник
comment
Происходят какие-то странные вещи... addTabRemoveEvent вызывается дважды, но tabs.remove вызывается только один раз при двойном удалении. Может сработать, если вы используете это для удаления вкладки или?   -  person Marco Johannesen    schedule 31.08.2011
comment
Извините, addTabRemoveEvent вызывается дважды??? Уточните пожалуйста :-)   -  person HGPB    schedule 31.08.2011


Ответы (2)


Я обнаружил, что событие запускалось несколько раз, поэтому я добавил базовую проверку. Вы также можете реализовать проверку на основе количества вкладок.

Пожалуйста, проверьте http://jsfiddle.net/GM9BQ/1/.

Обратите внимание, что я удалил часть кода, чтобы упростить отладку. Надеюсь, это поможет.

person Ajay Bhosale    schedule 31.08.2011
comment
Спасибо и интересно... Последняя панель вкладок не удаляется в этом случае? - person HGPB; 31.08.2011
comment
Только что поиграл с вашим (без каламбура), и скрытие вкладки заставляет вас думать, что вкладка удаляется. Я удалил скрытие, и вкладки больше не могут быть удалены. Взгляните на jsfiddle.net/GM9BQ/5. - person HGPB; 31.08.2011
comment
хорошо, в этом случае вам не нужно проверять ход событий. Также обратите внимание, что это все еще взлом ... - person Ajay Bhosale; 31.08.2011
comment
Удаление события заставляет его работать, но приводит к более жесткому поведению. - person Ajay Bhosale; 31.08.2011
comment
Спасибо за ваше время, Аджай - я застрял на этом несколько месяцев (время от времени). Я считаю, что это ошибка, которая уже посещалась ранее, но не исправлена. bugs.jqueryui.com/ticket/4524 - person HGPB; 31.08.2011
comment
Существует проблема с обработкой jQuery при удалении вкладок. Он просто удаляет дочерний контент на основе индекса, а не идентификатора. У них могут быть на это свои причины. В качестве альтернативы вы можете попробовать реализовать событие обновления сортировки и изменить порядок div на основе обновленного положения вкладок (li). - person Ajay Bhosale; 02.09.2011
comment
Привет, Аджай. Вы также можете использовать вкладку href, чтобы удалить вкладки, но у вас все равно возникнет та же проблема. jsfiddle.net/GM9BQ/13 - person HGPB; 02.09.2011
comment
Я перехватил событие обновления и переупорядочил дочерние элементы div, теперь он работает jsfiddle.net/GM9BQ/22, вам нужно изменить логику, которая генерирует новый идентификатор. - person Ajay Bhosale; 03.09.2011
comment
Я вижу, вы перемещаете панель вместе с вкладкой, чтобы они оставались на одной линии. Думаю, имеет смысл. Хороший. - person HGPB; 05.09.2011

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

Спасибо Ajay за работу над этим в предыдущем посте. Обновленный пример можно увидеть здесь.

http://jsfiddle.net/GM9BQ/23/

Обратите внимание на метод обновления функций addTabSortableEvent.

person HGPB    schedule 05.09.2011
comment
Извините - единственная причина заключалась в том, что ваш основной ответ был не так близок к реальной проблеме. Но я сделал ваш комментарий! В другой раз мой друг. - person HGPB; 06.09.2011