Как отсортировать в строке с помощью сортируемого интерфейса jQuery? - PullRequest
3 голосов
/ 02 сентября 2010

Я пытаюсь сделать очень простой плагин сетки самостоятельно.Моя проблема начинается, когда я хочу позволить пользователю изменить порядок столбцов (не сортировать строки таблицы, изменить, например, первый столбец, отображаемый справа от таблицы).Я использую сортируемый пользовательский интерфейс jQuery, но я обнаружил, что когда пользователь начинает перетаскивать th, пользовательский интерфейс jquery добавляет новый th в thead.Это заставляет последний th (тот, который находится справа от таблицы) вытащить таблицу горизонтально !!

Когда я опускаю th, я перетаскиваю, добавленный th удаляется, но в Chromeпоследний (перемещенный вправо, вне стола) не возвращается в таблицу.В IE и FF он все же возвращается в таблицу, но эффект при перетаскивании очень уродливый.

Мой код:

table.find("thead>tr").sortable({
    axis: "x",
    placeholder: "ui-state-highlight",
    handle: ".sortable",
    start: function(event, ui) {
        /* I'm doing some stuff */
    },
    update: function(event, ui) {
        /* I'm doing some stuff */
    }
});

Извините за мой плохой английский, заранее спасибо.

Диего

Обновление:

Пожалуйста, если пост не понятен, сообщите мне, и я постараюсь изменить его.Спасибо!

Ответы [ 3 ]

3 голосов
/ 23 мая 2011

У меня была такая же проблема, и наконец я нашел обходной путь.По сути, JQuery UI Sortable проверяет ориентацию элемента при его первом создании.Однако, если элемент не содержит никаких элементов для начала, он никогда не будет считаться горизонтальным элементом.Решение состоит в том, чтобы уничтожать и воссоздавать сортируемый объект каждый раз, когда в него помещается какой-либо предмет.Конкретный код можно найти в моем блоге:

http://www.judeosborn.com/post/5751510741/jquery-sortable-droppable-orientation-problem

Я также сообщил об этой проблеме разработчикам:

http://bugs.jqueryui.com/ticket/6702#comment:15

1 голос
/ 08 сентября 2011

Не решение (пока), а взломать:

$var.sortable({
    placeholder: '.my-placeholder'
});

css:
.my-placeholder {
    display: none;
}

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

1 голос
/ 26 апреля 2011

Проблема № 1: Ошибка Chrome (т.е. браузера webkit) еще не исправлена, но задокументирована здесь: - http://bugs.jqueryui.com/ticket/4765

Проблема № 2: Сортировка с использованием оси: 'x', улучшена в jQuery 1.8.12, но все еще содержит ошибку, которая не позволяет обнаружить ту ось: было указано 'x' Я представил решение здесь: - http://bugs.jqueryui.com/ticket/6702

...