首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建不带下级的列表项的子列表

创建不带下级的列表项的子列表
EN

Stack Overflow用户
提问于 2010-07-26 23:27:44
回答 2查看 1.9K关注 0票数 1

jquery sortable需要一点帮助。

我有一个嵌套列表,如下所示:

代码语言:javascript
复制
<div id="tree">
<ul>
    <li class="n-1">root
        <ul>
            <li class="n-2">Academic
                <ul>
                    <li class="n-5">Staff</li>
                    <li class="n-6">Courses</li>
                </ul>
            </li>
            <li class="n-3">Administration</li>
            <li class="n-4">Technical
                <ul>
                    <li class="n-6">Courses</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
</div>

和一个相关列表:

代码语言:javascript
复制
<div id="orphans">
    <ul>
        <li class="n-47">a</li>
        <li class="n-48">b</li>
        <li class="n-49">c</li>
        <li class="n-50">d</li>
    </ul>
</div>

我需要的是在拖动LI时创建一个无序列表,这样当鼠标悬停在目标列表中没有子列表的li上时,就会创建新的列表-如果该项目没有被放到该列表中,则在离开时删除该列表。

最快的解决方案是将当前元素悬停在其上,但使用sortable捕获它会有一点麻烦。

这是我到目前为止所知道的:

代码语言:javascript
复制
$('#tree ul li li , #orphans ul li')
    .addClass('closed')
    .live('click',function(){
        $(this).toggleClass( 'open closed');
    });

$('#tree ul ul')
    .sortable({
        items: 'li',
        connectWith:    '#tree ul ul',
        cursor:         'crosshair',
        helper:         'clone',
        zIndex:         999,
        placeholder:    'sort-highlight',
        opacity:        '0.6',
        over:           function(event,ui)
                        {
                            $(this).children('li.closed').toggleClass( 'open closed');
                            $(this).children('li:not(:has(ul)').append('<ul><li class="dummy">DADADA</li></ul>');
                        },
        out:            function(event,ui)
                        {
                            $('li.dummy').remove();
                            $('ul:empty').remove();
                        }
    })
    .disableSelection();


$('#orphans ul')
    .sortable({
        items: 'li',
        connectWith : '#tree ul',
        cursor: 'crosshair',
        helper: 'clone',
        zIndex: 999,
        placeholder: 'sort-highlight',
        opacity: '0.6'
    })
    .disableSelection();

非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-30 05:38:03

如果任何人感兴趣的话我已经做了一个工作……

我使用了start和end,而不是over和out选项。

代码语言:javascript
复制
start: function(event,ui)
       {
           $(this).find('li').not(':has(ul)').append('<ul><li></li></ul>');
           $(this).sortable('refresh');
       } ,
stop:  function(event,ui)
       {
           $(this).find('li:empty').remove();
           $(this).find('ul:empty').remove();
           $(this).sortable('refresh')
       }

如果任何人有更好的解决方案,请让我们知道…

票数 0
EN

Stack Overflow用户

发布于 2011-05-10 21:08:03

其实,我没有你那样的列表,我看到在安莉里面你可以有ul和li!

代码语言:javascript
复制
> <li class="n-2">Academic
>                 <ul>
>                     <li class="n-5">Staff</li>
>                     <li class="n-6">Courses</li>
>                 </ul> 
> </li>

我只得到了:

代码语言:javascript
复制
 <ul id="sortable" class="connectedSortable">
    <li id='1' class="ui-state-default"><span> stuff ...</span></li>
    <li id='3' class="ui-state-default"><span> stuff ...</span></li>
    <ul id="sortable" class="connectedSortable">
         <li id='1' class="ui-state-default"><span> stuff ...</span></li>
         <ul id="sortable" class="connectedSortable">     
                <li id='4' class="ui-state-default"><span> stuff ...</span></li>   
         </ul>
    </ul>
    <li id='2' class="ui-state-default"><span> stuff ...</span></li>  
</ul> 

在我的jquery函数中,我在start中有这样的代码:

代码语言:javascript
复制
start: function(event,ui)
      {
     $(this).find('li').next().not('ul').after('<ul id="sortable" class="connectedSortable"><li class="hiddenli" style="height:0.1em;"></li></ul>');        
    $(this).sortable('refresh');
       }

因此,我管理您的版本以处理我的列表^^,但我得到在我当前拖动的元素之后还会得到一个可放入区域,因此我可以将my li作为子元素放置,但由于父元素是我正在拖动的元素,所以我不可能删除

在我正在拖动的元素之后创建

  • ,这会触发start事件!

对于排序的更新,我尝试使用serialize但失败了我不知道如何获取问题和它的子项并正确排序我不知道我的

  • 被放在哪里(它有哪个父项,如果它在一个列表中,它有其他的位置,因为正如你在屏幕截图上看到的,我为每一项都有一个数字(1-2-3-4)最后一个表示有父id=3的列表中的顺序,我已经尝试了几天了:(
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3336314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档