Менять строки таблицы jquery

256
09 февраля 2018, 20:02

Есть скрипт динамической таблицы

 jQuery(document).ready(function() {
  jQuery("body").on("click", ".del", function() {
    jQuery(this).parent().parent().remove();
  });
  //new DynamicTable(document.getElementById("dynamic") );
  jQuery("body").on("click", ".add", function() {
    jQuery("#tablici").find("tr:last").parent().append(jQuery("#tablici tr:last").clone());
  });
  jQuery("body").on("click", ".addnull", function() {
    jQuery("#tablicinull").find("tr:last").parent().append(jQuery("#tablicinull tr:last").clone());
  });
});

По нему можно добавлять строки в таблицу при нажатии кнопки с классом .add(.addnull) в таблицу "tablici" и таблицу "tablicinull", но строка добавляется только в конец таблицы. Как сделать чтобы строка добавлялась либо после той строки в которой нажата кнопка добавить, либо чтобы строки таблицы можно было менять местами. А лучше и то и то.

Answer 1

Вот вам пример функций, которые вы перечислили.

$("table").on('click', ".add", function(){ 
     var $row = $(this).closest("tr"); 
     $row.clone().insertAfter($row) 
         .find("td").eq(1).text("строка " + $("tr").length); 
  }) 
  .on("click", ".remove", function(){ 
     $(this).closest("tr").remove(); 
  }) 
  .on("click", ".up, .down", function(){ 
     var $row = $(this).closest("tr"); 
      
     var up = $(this).hasClass("up") 
      
     var $t = up  ?  $row.prev() : $row.next() ; 
     if($t.length){ 
        up ? $t.insertAfter($row) : $t.insertBefore($row); 
     } 
  });
table { 
  counter-reset: row-num; 
} 
table tr { 
  counter-increment: row-num; 
} 
table tr td:first-child::before { 
    content: counter(row-num) ". "; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" type="text/css"> 
 
<table class="table table-hover table-striped table-condensed"> 
  <tbody> 
     <tr> 
       <td></td> 
       <td>строка 1</td> 
       <td><button class="btn btn-danger btn-xs remove">Удалить</button></td> 
       <td><button class="btn btn-primary btn-xs add" >Добавить</button></td> 
       <td> 
          <div class="btn-group btn-group-xs"> 
            <button class="btn btn-default up" >Вверх</button> 
            <button class="btn btn-default down" >Вниз</button> 
          </div> 
       </td>          
     </tr> 
  </tbody> 
</table>

READ ALSO
Как добавить html2canvas к dom-to-image?

Как добавить html2canvas к dom-to-image?

Когда делаю скрин dom-to-image все нормально, но не во всех браузерах работаетПытаюсь добавить html2canvas, чтобы скрины делать отдельно для safari, но они...

362
внедрение php кода во внешние js файлы

внедрение php кода во внешние js файлы

Подскажите, возможно ли реализовать следующую ситуацию:

239
Как сделать защищенный сайт с функциями отправки файлов и подтверждения её принятие [требует правки]

Как сделать защищенный сайт с функциями отправки файлов и подтверждения её принятие [требует правки]

Здравствуйте! Вообщем я буду делать сайт с уровнями доступа (царь, барин, крестьяне) и смысл в том что царь поручает дело, одному из баринов,...

208
Доступ к файлам на другом жестком диске

Доступ к файлам на другом жестком диске

Доброго времени! Такой вопрос, есть сервер в котором установлены 2 жестких диска, один 40 гб, второй 1тбна 40 гб расположен сервер (xampp сама машинка...

221