nestedsortable动态项目不折叠

时间:2013-07-17 14:30:23

标签: javascript jquery jquery-ui nested-sortable

我正在使用这个嵌套的可排序插件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 个答案:

答案 0 :(得分:2)

好的,经过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);           
})

希望这会对某人有所帮助。 如果你想看到它的实际效果,可以使用working copy