Сортировка jquery > вложенные URL-адреса
-
12-09-2019 - |
Вопрос
Я пытаюсь вложить несколько списков в основной список.Цель состоит в том, чтобы организовать меню и подменю.
HTML:
<ul id="pages_0" class="sortable-list">
<li id="page_14">home
<ul id="pages_14" class="sortable-list">
<li id="page_21">nieuwsarchief</li>
<li id="page_19">waarom bouwelement</li>
<li id="page_20">vacatures</li>
</ul>
</li>
<li id="page_23">ondersteuning
<ul id="pages_23" class="sortable-list">
<li id="page_24">brochures</li>
<li id="page_25">constructie</li>
</ul>
</li>
<li id="page_18">producten</li>
<li id="page_26">contact</li>
<li id="page_28">referenties</li>
<li id="page_11">projectaanpak
<ul id="pages_11" class="sortable-list">
<li id="page_15">advies</li>
<li id="page_13">productie</li>
<li id="page_12">tekenwerk</li>
</ul>
</li>
</ul>
Текущий код:
$(".sortable-list").sortable({ update: function() { $.post('/pages/order/0/, $('#pages_0').sortable("serialize", {key: 'pages_0[]'})) } }); $(".sortable-list").disableSelection();
Однако, когда я устанавливаю это, отправляемая переменная, конечно, равна «pages_0».
Итак, что я пытаюсь:
$('ul.sortable-list').each(function() { pid = ''; pid = $(this).attr('id').split('_'); pid = pid[1]; alert(pid); $('#pages_'+pid).sortable({ update: function() { $.post('/pages/order/'+pid, $('#pages_'+pid).sortable("serialize", {key: 'pages_'+pid+'[]'})) } }); $('#pages_'+pid).disableSelection(); alert(pid); });
Однако моя проблема:в моем случае:если я использую второй jquery, всякий раз, когда я сортирую, я получаю «11» (из страниц_11, последнего ul).Конечно, мне нужен идентификатор родительского ul.Есть идеи по решению этой проблемы?Спасибо!
Решение
Если вы не квалифицируете pid с помощью var
это будет глобальная переменная, и ей будет присвоено последнее значение для всех функций обновления.
Попробуй это:
$('ul.sortable-list').each(function() {
var pid = $(this).attr('id').split('_')[1];
alert(pid);
$('#pages_'+pid).sortable({
update: function() {
$.post('/pages/order/'+pid, $('#pages_'+pid).sortable("serialize", {key: 'pages_'+pid+'[]'}))
}
});
$('#pages_'+pid).disableSelection();
alert(pid);
});
Не связан с StackOverflow