Вложенный динамический элемент не сворачивается

Я использую этот вложенный сортируемый плагин http://mjsarfatti.com/sandbox/nestedSortable, и единственная проблема, которая у меня возникла до сих пор, - это когда я динамически добавляю элемент в "дерево", я не могу развернуть или свернуть элемент (ы). Пока я просто использую пример кода и добавляю к нему.

Как я добавляю элементы динамически:

$('#new-button').on('click', function() {       
   var nextId = $('ol.sortable').nestedSortable('nextId');
   var $li = $("<li id=\"list_" + nextId + "\"><div><span class=\"disclose\"><span></span>          
   </span>New Item</div>");
   $li.addClass('mjs-nestedSortable-leaf');         
   $('ol.sortable').append($li);            
})

Когда я добавляю эти новые элементы в дерево, они работают просто отлично - я могу перемещать их по всему дереву, делать их детьми и т. Д. Однако, когда я пытаюсь свернуть новый элемент, который я сделал родителем, - ответа нет,

Я уверен, что я просто не добавил правильный обработчик событий где-то, но я не могу найти, где это происходит. Я даже вызвал destroy() и _create() дерева после добавления нового элемента (ов), надеясь, что это "заново сконфигурирует" все элементы снова. Однако не повезло там. Может кто-нибудь сказать мне, как я могу правильно подключить эти новые динамически созданные элементы, чтобы они рассматривались как другие элементы в дереве?

Спасибо!

1 ответ

Хорошо, после 2 дней просмотра я смог решить проблему. Это забавно - код, который я искал, был прямо над новым кодом, который я ввел. (Прямо под моим носом.) Спасибо добрым людям за то, что они познакомили меня с: Visual Event - это очень помогло мне отследить, где события создавались в первую очередь!

$('#new-button').on('click', function() {       
    var nextId = $('ol.sortable').nestedSortable('nextId');
    //Begin creating dynamic list item
   var $li = $("<li id=\"list_" + nextId + "\">");
   var $lidiv = $("<div></div>");
   var $disli = $("<span class=\"disclose\"><span></span></span>");
   $li.addClass('mjs-nestedSortable-leaf');

   //Assign event listener to newly created disclose span tag above
   $disli.on('click', function() {
       $(this).closest('li').toggleClass('mjs-nestedSortable-collapsed').toggleClass('mjs-nestedSortable-expanded');
    });

    //Now actually start to append to DOM
    $lidiv.append($disli);
    $lidiv.append("New List Item " + nextId);
    $li.append($lidiv);
    $('ol.sortable').append($li);           
})

Надеюсь, это кому-нибудь поможет. Вот рабочая копия на тот случай, если вы хотите увидеть ее в действии.

Другие вопросы по тегам