Я использую сортируемый пользовательский интерфейс jQuery, чтобы сортировать сетку таблицы. Кажется, что код работает нормально, но поскольку я не добавляю ширину к td
s, при перетаскивании tr
его содержимое уменьшается.
Например; если моя строка таблицы составляет 500 пикселей, когда я начинаю перетаскивать, она становится 300 пикселей. Я предполагаю, что это происходит, потому что ширина не определена в сетке. Это потому, что я использую два класса для td
s ( fix
и liquid
).
fix
Класс делает td
равна ширине содержимого и liquid
делает td
100% ширины. Это мой подход к таблице сетки без необходимости присваивать ширину td
s.
Любая идея, как сделать сортируемую работу с моим подходом?
Ответы:
Я нашел ответ здесь .
Я немного изменил его, чтобы клонировать строку вместо добавления ширины к оригиналу:
источник
$(this).width($originals.eq(index).outerWidth());
Я думаю, что это может помочь:
источник
Выбранный здесь ответ является действительно хорошим решением, но в нем есть одна серьезная ошибка, которая проявляется в оригинальной скрипке JS ( http://jsfiddle.net/bgrins/tzYbU/ ): попробуйте перетащить самую длинную строку ( Бог благословит вас, мистер Розовая вода ), а остальные клетки шириной коллапсируют.
Это означает, что фиксации ширины ячейки на перетаскиваемой ячейке недостаточно - вам также необходимо зафиксировать ширину таблицы.
JS Fiddle: http://jsfiddle.net/rp4fV/3/
Это решает проблему свертывания таблицы после перетаскивания первого столбца, но вводит новый: если вы измените содержимое таблицы, размеры ячеек теперь будут фиксированными.
Чтобы обойти это при добавлении или изменении содержимого, вам необходимо очистить установленную ширину:
Затем добавьте свой контент, затем снова установите ширину.
Это все еще не полное решение, так как (особенно с таблицей) вам нужен заполнитель для удаления. Для этого нам нужно добавить функцию при запуске, которая создает заполнитель:
JS Fiddle: http://jsfiddle.net/rp4fV/4/
источник
$(".must-have-class").css("height", $(ui.item).outerHeight());
Кажется, что клонирование строки не работает хорошо в IE8, но оригинальное решение делает.
Протестировано с помощью jsFiddle .
источник
Вызовите этот следующий код, когда ваша таблица будет готова к сортировке, это позволит убедиться, что ваши элементы td исправлены, не нарушая структуру таблицы.
источник
th
так же, какtd
. Он исправляет коллапс перетаскиваемой строки и таблицы, но за счет исправления ширины.jsFiddle
После множества различных попыток я просто попробовал простое решение, которое завершает решение Дейва Джеймса Миллера, чтобы предотвратить сокращение таблицы при перетаскивании самой большой строки. Я надеюсь, что это поможет :)
источник
Решение Кейта прекрасно, но в Firefox возникло небольшое хаос, который не суммировал colspans, а привлек их внимание. (Старый JS строки типа боли в колене)
заменив эту строку:
с участием:
Исправляет проблему. (Поскольку js вынужден рассматривать переменные как числа вместо строк)
источник
Ответ Дэйва Джеймса Миллера сработал для меня, но из-за расположения контейнерных элементов на моей странице помощник, который перетаскивает курсор мыши, смещен относительно положения моей мыши. Чтобы исправить это, я добавил следующее к вспомогательному обратному вызову
Вот полный обратный вызов с добавленной выше строкой:
Я бы добавил это в качестве комментария к ответу Дэйва, но у меня не было достаточно представителей на этот счет.
источник
Вроде как
disableSelection()
- метод плохой и устарел в наши дни. Я больше не могу использовать ввод текста внутри сортируемой строкиMozilla Firefox 35.0
. Это просто больше не сфокусировано.источник
источник
источник
Примените сортируемое к элементу tbody таблицы и просто установите для помощника значение «клон», как описано в API jquery-ui.
источник