2012-04-04 2 views
7

Необходимо изменить позицию li, щелкнув по ней вверх или вниз.jQuery Оформить заказ, нажав на ссылку

<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> 

Так что должно произойти здесь, например, если мы нажмем Подняться на ITEM2, Позиционный 2 будет двигаться вверх до того пункта 1.

I судимого сделать так, но это не делает работа:

$(".moveUp").click(function() { 
    var thisLine = $(this).parent(); 
    var prevLine = thisLine.prev(); 
    prevLine.insertAfter(thisLine); 
}); 

Надежда кто-то может мне помочь ...

+1

Если есть ответ, который работает для вас, пожалуйста, отметьте его как принятый ответ – JakeJ

ответ

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 
}); 
+0

Jake .. прежде всего большое спасибо .. это хороший код .. – user1309015

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/

+0

Tks для вашего ответа, хороший один Shankar ... – user1309015

0

http://jsfiddle.net/j7xtS/2/

$('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]); 
    } 
});​ 
+0

Bart ... много tks dude .. – user1309015

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); 
}); 
Смежные вопросы