简短版:如何将Link 1
拖到此演示中Link 3
下的其中一个下拉菜单中? http://jsfiddle.net/Gdadu/2/
编辑:关于将某个项目拖到另一个项目时应该发生什么的问题已经提出:它应该放在左/右还是开始一个新的子菜单?为了使列表完全可排序,必须有一些方法将项目放入不存在的子菜单,开始新的ul
下拉列表。我可以在每个没有尚未用作放置目标的列表项中插入空ul
,但上面的问题仍然存在。
这似乎比我最初的想法困难得多,所以我为没有付出更多努力而道歉,因为我没有考虑过这些问题。我愿意接受对所述问题的回答,并在以后担心其余的问题。
我有一个基本的下拉导航列表,我希望使用jQuery UI完全排序。任何li
元素都应该能够移动到整个列表中的任何位置。我将顶级列表项拖到子菜单时遇到问题,在“拖动模式”下,:hover
似乎没有在下拉列表中触发,因此下拉列表不会出现。
示例HTML:
<ul class="dropdown">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a>
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a>
<ul>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</li>
</ul>
</li>
</ul>
我的CSS:
.dropdown,
.dropdown li,
.dropdown ul {
list-style:none;
margin:0;
padding:0;
}
.dropdown {
position:relative;
display:block;
z-index:10000;
}
.dropdown ul {
position:absolute;
top:100%;
width:100%;
visibility:hidden;
display:none;
z-index:900;
}
.dropdown ul ul {
top:0;
left:100%;
}
.dropdown li {
position:relative;
float:left;
}
.dropdown li:hover{
z-index:910;
cursor:default;
}
.dropdown ul:hover,
.dropdown li:hover > ul,
.dropdown a:hover + ul,
.dropdown a:focus + ul {
visibility:visible;
display:block;
}
.dropdown a {
text-decoration:none;
display:block;
padding:.5em 2em;
background:#cde;
border:1px solid #ccc;
}
.dropdown ul li {
width:100%;
}
可排序初始化:
$('.dropdown').sortable({
items: 'li'
});
演示:http://jsfiddle.net/Gdadu/2/
例如,我想将“链接1”拖动到子菜单中,但不能这样做,因为拖动时子菜单不会出现,就像忽略:hover
一样。我不确定问题出在CSS或javascript中。我该怎么办?
评论中的好主意:
也许你可以在拖动开始时触发所有扩展
这可能会有效,但我不希望整个菜单扩展。它可能是很多链接和3级导航的内容,并且可能与所有弹出/下拉(巨大的混乱)重叠。
答案 0 :(得分:2)
这是一个小提琴,展示了一些可以帮助您实施的要点:http://jsfiddle.net/Gdadu/13/
它远非完美,正如评论中指出的那样,“将所有内容排序到各处”也存在一些逻辑问题:)这里没有工作的东西是将嵌套的li排序回顶级,在嵌套的ul上排序, ......但我认为它们已经勾勒出来了。区分排序和拖动可能是jqueryui当前状态的必要条件。另外,我为子菜单创建了优秀的css解决方案,并使它们基于javascript而简化了一些事情。
但是:您可以在link3或link3的嵌套ul中删除link1;)