jquery sortable › вложенные uls

Я пытаюсь вложить несколько списков в основной список. Цель состоит в том, чтобы организовать меню и подменю.

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» (из pages_11, последний ul). Конечно, мне нужен идентификатор родительского ul. Любые идеи по решению этой проблемы? Спасибо!


person Maurice Kroon    schedule 05.06.2009    source источник


Ответы (1)


Если вы не укажете 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);
});
person tvanfosson    schedule 05.06.2009