【发布时间】:2010-07-26 15:27:43
【问题描述】:
jquery sortable 需要一点帮助。
我有一个这样的嵌套列表:
<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>
以及相关的列表:
<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 来捕捉它有点麻烦。
这是我目前所拥有的:
$('#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();
非常感谢任何帮助。
【问题讨论】: