Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2020, 16:29   #1
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию Сортировка с помощью SortableJS

Здравствуйте. Не могу сообразить, как настроить правильно сортировку с помощью SortableJS (не jquery sortable).
Имеется список с категориями в которых список со строками. План такой: нужно менять местами категории и менять местами строки. Строки можно перемещать из категории в категорию.
(Аналогия: есть дни недели и в каждом дне есть различные дела. Дела можно переносить внутри дня и на другой день. И дни можно менять местами.)

Чего я смог добиться: сортировать категории друг относительно друга (не пихать в строки).

А вот что я никак не могу сделать:
1. Чтобы категория ".sortable_noct" находилась всегда внизу. то есть поднять её нельзя, и под неё поставить категорию тоже было невозможно.
2. Как перетаскивать строки внутри категории, в другую категорию, и не запихивать в другие места?

Подскажите, как заставить списки сортироваться правильно?

Код HTML:
<ul class="total" id="total">
	<li class="sortable_ct">
		<div class="mm"></div>
		<div class="name_ct">ct_1</div>
		<ul>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_1_pg_1</div></li>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_1_pg_2</div></li>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_1_pg_3</div></li>
		</ul>
	</li>
	<li class="sortable_ct">
		<div class="mm"></div>
		<div class="name_ct">ct_2</div>
		<ul></ul>
	</li>
	<li class="sortable_ct">
		<div class="mm"></div>
		<div class="name_ct">ct_3</div>
		<ul>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_3_pg_1</div></li>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_3_pg_2</div></li>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_3_pg_3</div></li>
		</ul>
	</li>
	<li class="sortable_ct sortable_noct">
		<div class="mm"></div>
		<div class="name_ct">ct_no</div>
		<ul>
			<li class="sortable_pg"><div class="mm"></div><div class="name_pg">ct_no_pg_1</div></li>
		</ul>
	</li>
</ul>
Код:


let elct = document.getElementById('total');
let elpg = [].slice.call(document.querySelectorAll('.total .sortable_ct'));

new Sortable(elct, {
	animation: 150,
	group: 'ct',
	handle: '.total .sortable_ct > .mm',
	filter: '.total .sortable_noct > .mm',
	ghostClass: 'move',
	sort: true,
	draggable: '.total .sortable_ct',
	onStart: function(evt) {
		$('body').addClass('moveCT');
		console.log(evt);
	},
	onEnd: function(evt) {
		$('body').removeClass('moveCT');
	}
});


for (var i = 0; i < elpg.length; i++) {
	new Sortable(elpg[i], {
		group: 'pg',
		animation: 150,
		ghostClass: 'move',
		handle: '.total .sortable_pg > .mm',
		onStart: function(evt) {
			$('body').addClass('movePG');
		},
		onEnd: function(evt) {
			$('body').removeClass('movePG');
		}
	});
}
Ссылка на рабочий пример: https://jsfiddle.net/bd86k9L4/
Parallelogram вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка записей в таблице с помощью ComboBox Kadora БД в Delphi 5 03.06.2017 22:30
Сортировка с помощью SQL в Firebird2.5 GetMax Помощь студентам 15 02.07.2014 00:54
Сортировка с помощью VBA Lyubov1990 Microsoft Office Excel 11 22.11.2011 20:06
Сортировка строк по алфавиту в структуре с помощью указателей Anarki Общие вопросы C/C++ 2 23.10.2009 19:36
Сортировка писем Outlook с помощью VBA. GoreProgrammist Microsoft Office Excel 0 28.09.2009 14:14