2009-10-15 47 views
57

Giả sử tôi có các liên kết với các mũi tên lên/xuống để di chuyển hàng trong bảng lên hoặc xuống theo thứ tự. Điều gì sẽ là cách đơn giản nhất để di chuyển hàng đó lên hoặc xuống một vị trí (bằng cách sử dụng jQuery)?Cách di chuyển hàng trong bảng trong jQuery?

Dường như không có cách nào trực tiếp để làm điều này bằng cách sử dụng các phương thức dựng sẵn của jQuery và sau khi chọn hàng với jQuery, tôi không tìm thấy cách nào để di chuyển nó. Ngoài ra, trong trường hợp của tôi, làm cho các hàng có thể kéo được (mà tôi đã thực hiện với một plugin trước đó) không phải là một tùy chọn.

+1

Bạn có tùy chọn sử dụng một điều khiển lưới điện trên nền tảng của bạn? –

Trả lời

146

Bạn cũng có thể làm điều gì đó khá đơn giản với những điều chỉnh lên/xuống ..

cho liên kết của bạn có một lớp học của up hoặc down bạn có thể dây này lên trong xử lý bấm vào các liên kết. Điều này cũng theo giả định rằng các liên kết nằm trong mỗi hàng của lưới.

$(document).ready(function(){ 
    $(".up,.down").click(function(){ 
     var row = $(this).parents("tr:first"); 
     if ($(this).is(".up")) { 
      row.insertBefore(row.prev()); 
     } else { 
      row.insertAfter(row.next()); 
     } 
    }); 
}); 

HTML:

<table> 
    <tr> 
     <td>One</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Two</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Three</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Four</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Five</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
</table> 

Demo - JsFiddle

+0

@Quintin: cảm ơn vì điều này. Nếu kiểu tr hàng không hiển thị, thì làm thế nào tôi có thể di chuyển các hàng đến hàng trước đó được hiển thị khối? nếu bất kỳ kiểu hàng nào được hiển thị, thì tôi cần phải bấm nhiều lần để di chuyển lên hoặc xuống. Bất kì lời đề nghị nào ? – Paulraj

+1

Bất kỳ đề xuất nào về cách ẩn liên kết "Lên" cho hàng đầu tiên và liên kết "Xuống" cho hàng cuối cùng? – rboarman

+0

@ rboarman Một cái gì đó dọc theo dòng '$ (". Up, .down "). Show();' sau đó '$ (" tr: first .up, tr: last .down "). Hide();' nhưng bạn có thể cần phải tinh chỉnh bộ chọn theo nhu cầu chính xác của bạn. –

6
$(document).ready(function() { 
    $(".up,.down").click(function() { 
     var $element = this; 
     var row = $($element).parents("tr:first"); 

     if($(this).is('.up')){ 
     row.insertBefore(row.prev()); 
     } 
     else{ 
     row.insertAfter(row.next()); 
     } 

    }); 

});

Hãy thử sử dụng JSFiddle

+1

có thể rút ngắn nó bằng: var row = $ (this) .closest ('tr'); –

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