2012-04-04 6 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> 

だから我々は、アイテム2上に移動]をクリックした場合、例えば、ここにどうするか、項目2、項目の前まで移動します。1.

は、私はこのように行うにしようと試みたが、それはしていません作品:いくつかのいずれかが私を助けることができる

$(".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

ジェイク..まず最初に多くの感謝.. thats良いコード.. – user1309015

6

はこれを試してみてください:

Working jsFiddle here

+0

あなたの返信のためのTks ... – 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、良い1つの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

バート...多くのtksのおい... – 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); 
}); 
関連する問題