需要通过点击向上移动或向下移动来改变li位置。
<div>
<ul>
<li>Item1 <a class="moveUp">Move Up</a> <a class="moveDown">Move Down</a></li>
<li>Item2 <a class="moveUp">Move Up</a> <a class="moveDown">Move Down</a></li>
<li>Item3 <a class="moveUp">Move Up</a> <a class="moveDown">Move Down</a></li>
<li>Item4 <a class="moveUp">Move Up</a> <a class="moveDown">Move Down</a></li>
<li>Item5 <a class="moveUp">Move Up</a> <a class="moveDown">Move Down</a></li>
</ul>
</div>
那么这里应该发生什么,例如,如果我们点击向上移动第2项,则第2项将在第1项之前向上移动。
我试着这样做,但它不起作用:
$(".moveUp").click(function () {
var thisLine = $(this).parent();
var prevLine = thisLine.prev();
prevLine.insertAfter(thisLine);
});
希望有人可以帮助我...
答案 0 :(得分:6)
试试这个:
$(".moveUp").click(function () {
var thisLine = $(this).parent();
var prevLine = thisLine.prev();
prevLine.before(thisLine);
});
$(".moveDown").click(function () {
var thisLine = $(this).parent();
var prevLine = thisLine.next();
prevLine.after(thisLine);
});
使用jsFiddle here。
答案 1 :(得分:3)
试试这个。
$(".moveUp").click(function () {
var $parent = $(this).parent();
$parent.prev().before($parent);
});
$(".moveDown").click(function () {
var $parent = $(this).parent();
$parent.next().after($parent);
});
工作演示 - http://jsfiddle.net/vQmHU/
答案 2 :(得分:2)
当您尝试将元素向上移动或向下移动到底部时,这应该可以工作并且也不会将元素移动到UL之外:
$('.moveUp').click(function(){
var liItem = $(this).parent();
if (liItem.prev().is('li'))
{
liItem.insertBefore(liItem.prev())
}
});
$('.moveDown').click(function(){
var liItem = $(this).parent();
if (liItem.next().is('li'))
{
liItem.insertAfter(liItem.next())
}
});
工作示例:http://jsfiddle.net/BDecp/
此外,您的代码应该包含在此:
$(document).ready(function () {
//Code Here
});
答案 3 :(得分:1)
这个只重新排列列表项:
$(".moveUp").click(function () {
var $parent = $(this).parent().closest("li");
$parent.prev().before($parent);
});
$(".moveDown").click(function () {
var $parent = $(this).parent().closest("li");
$parent.next().after($parent);
});
答案 4 :(得分:0)
$('ul').on('click', 'a', function(){
var $this = $(this),
$li = $this.parent();
if ($this.hasClass('moveUp') && $li.prev().length>0){
$li.prev().before($li[0]);
}
else if ($this.hasClass('moveDown') && $li.next().length>0){
$li.next().after($li[0]);
}
});