我有两个可排序对象列表
1 1 (1A 1B)
2 (2A 2B) 2
3 3 (3A 3B)
4 (4A 4B) 4
5 5 (5A 5B)
列表的代码如下:
$( function() {
$( ".contain" ).sortable();
});
.contain{
list-style: none;
}
#right{
float: left;
}
#left{
float: left;
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div>
<div>
<ul id="left" class="contain">
<li class="1">1</li>
<li class="2">2</li>
<ul>
<li>2A</li>
<li>2B</li>
</ul>
<li class="3">3</li>
<li class="4">4</li>
<ul>
<li>4A</li>
<li>4B</li>
</ul>
<li class="5">5</li>
</ul>
</div>
<div>
<ul id="right" class="contain">
<li class="1">1</li>
<ul>
<li>1A</li>
<li>1B</li>
</ul>
<li class="2">2</li>
<li class="3">3</li>
<ul>
<li>3A</li>
<li>3B</li>
</ul>
<li class="4">4</li>
<li class="5">5</li>
<ul>
<li>5A</li>
<li>5B</li>
</ul>
</ul>
</div>
</div>
我想将相同的数字排序在一起。例如,如果我将清单5中的“左”移到顶部,那么清单5中的“右”也应移到顶部,反之亦然。将列表“ right”中的3移至顶部,然后列表“ left”中的3进行相同操作。
答案 0 :(得分:4)
在您的代码中使用此js并尝试此答案
$(".contain").sortable({
start:function(event, ui){
pre = ui.item.index();
},
stop: function(event, ui) {
lst = $(this).attr('id');
post = ui.item.index();
other = (lst == 'left') ? 'right' : 'left';
if (post > pre) {
$('#'+other+ ' li.li_parent:eq(' +pre+ ')').insertAfter('#'+other+ ' li.li_parent:eq(' +post+ ')');
}else{
$('#'+other+ ' li.li_parent:eq(' +pre+ ')').insertBefore('#'+other+ ' li.li_parent:eq(' +post+ ')');
}
}
});
您的ul应带有li,例如:<li>1<ul><li>a</li></ul></li>
,并为可移动li_parent
分配类名li
。
$(function() {
var lst, pre;
$(".contain").sortable({
start: function(event, ui) {
pre = ui.item.index();
},
stop: function(event, ui) {
lst = $(this).attr('id');
post = ui.item.index();
other = (lst == 'left') ? 'right' : 'left';
if (post > pre) {
$('#' + other + ' li.li_parent:eq(' + pre + ')').insertAfter('#' + other + ' li.li_parent:eq(' + post + ')');
} else {
$('#' + other + ' li.li_parent:eq(' + pre + ')').insertBefore('#' + other + ' li.li_parent:eq(' + post + ')');
}
}
});
});
.contain{
list-style: none;
}
#right{
float: left;
}
#left{
float: left;
}
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div>
<div>
<ul id="left" class="contain">
<li class="1 li_parent">1</li>
<li class="2 li_parent">2
<ul>
<li>2A</li>
<li>2B</li>
</ul>
</li>
<li class="3 li_parent">3</li>
<li class="4 li_parent">4
<ul>
<li>4A</li>
<li>4B</li>
</ul>
</li>
<li class="5 li_parent">5</li>
</ul>
</div>
<div>
<ul id="right" class="contain">
<li class="1 li_parent">1
<ul>
<li>1A</li>
<li>1B</li>
</ul>
</li>
<li class="2 li_parent">2</li>
<li class="3 li_parent">3
<ul>
<li>3A</li>
<li>3B</li>
</ul>
</li>
<li class="4 li_parent">4</li>
<li class="5 li_parent">5
<ul>
<li>5A</li>
<li>5B</li>
</ul>
</li>
</ul>
</div>
</div>