2012-06-19 45 views
6

Có cách nào đơn giản để di chuyển một phần tử bên trong chính phần tử cha của nó không?Phần tử DOM di chuyển jQuery bên trong parent

Như thế này ...

từ:

<div class="test">hello 1</div> 
<div class="test">hello 2</div> 
<div class="test">hello 3</div> 

tới:

<div class="test">hello 1</div> 
<div class="test">hello 3</div> 
<div class="test">hello 2</div> 

Hoặc di chuyển một UP div hoặc XUỐNG một bước, hoặc sử dụng các chỉ số để appendTo trong một cụ thể Chức vụ.

+0

các đặc tính của là gì hai yếu tố? Làm thế nào để bạn chọn các yếu tố để di chuyển, và nơi nào bạn cần phải di chuyển nó đến? –

+0

Tôi chọn nó bằng trình xử lý nhấp chuột. Sau đó, tôi sử dụng chỉ mục của phần tử được nhấp. – user1121487

+0

Được rồi, sau đó phần tử được nhấp sẽ đi đâu? Nó có nên được di chuyển sau phần tử cuối cùng trong danh sách không? Làm thế nào để bạn xác định vị trí mới? –

Trả lời

12

Bạn sẽ có thể sử dụng .prev().next() như thế này (đây là một hàm jQuery):

$.fn.moveUp = function() { 
    $.each(this, function() { 
     $(this).after($(this).prev()); 
    }); 
}; 
$.fn.moveDown = function() { 
    $.each(this, function() { 
     $(this).before($(this).next()); 
    }); 
}; 
$("div:eq(2)").moveUp(); //Would move hello 3 up 
$("div:eq(0)").moveDown(); //Would move hello 1 down 

JSFiddle Demo

+0

hoạt động tuyệt vời, cảm ơn! – user1121487

3

Hãy thử

$("div:eq(2)").after($("div:eq(0)")); 

hoặc

$("div:eq(2)").before($("div:eq(1)")) 

Luôn nhớ rằng: eq() là không dựa.

+0

Bạn không thể chỉ làm '$ (" div: eq (2) ") sau ($ (" div: eq (3) "))' hoặc sẽ không làm việc? – h2ooooooo

+0

Cảm ơn! Đã cập nhật câu trả lời của tôi ... – 472084

+0

Cảm ơn, hoạt động tuyệt vời! – user1121487

2
var child = $('#parent div'); // keep reference for further use 
child.eq(2).insertBefore(child.eq(1)); 

DEMO

+0

hoạt động tuyệt vời quá cảm ơn! – user1121487

Các vấn đề liên quan