2009-10-15 10 views
57

Powiedz, że miałem linki ze strzałkami w górę/w dół, aby przenieść wiersz tabeli w górę lub w dół. Jaki byłby najprostszy sposób przeniesienia tego rzędu w górę lub w dół o jedną pozycję (przy użyciu jQuery)?Jak przenieść wiersz tabeli w jQuery?

Nie wydaje się, że można to zrobić w sposób bezpośredni za pomocą wbudowanych metod jQuery, a po wybraniu wiersza z jQuery nie znalazłem sposobu na przeniesienie go. Również w moim przypadku uczynienie wierszy przeciągalnymi (co zrobiłem wcześniej z wtyczką) nie jest opcją.

+1

Czy masz możliwość korzystania z Grid Control na platformie? –

Odpowiedz

146

Można również zrobić coś całkiem proste z regulacją góra/dół ..

podane linki mieć klasę up lub down można ten przewód w module obsługi kliknięcia łącza. Jest to również przy założeniu, że linki znajdują się w każdym rzędzie siatki.

$(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: dzięki za to. Jeśli styl wiersza TR wyświetla brak, to w jaki sposób mogę przenieść wiersze do poprzedniego wiersza, który jest wyświetlany jako blok? jeśli jeden styl wiersza nie wyświetla się, to muszę kliknąć kilka razy, aby przejść w górę lub w dół. jakieś sugestie ? – Paulraj

+1

Jakieś sugestie, jak ukryć link "Up" dla pierwszego wiersza i link "Down" dla ostatniego wiersza? – rboarman

+0

@rboarman Coś w rodzaju '$ (" up, .down "). Show();' then '$ (" tr: first .up, tr: last .down "). Hide();' but może być konieczne dostosowanie selektorów do konkretnych potrzeb. –

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()); 
     } 

    }); 

});

Spróbuj użyć JSFiddle

+1

może skrócić go za pomocą: var row = $ (this) .closest ('tr'); –