Расширение строк таблицы с помощью html

#javascript #html #jquery #css #html-table

Вопрос:

Я создал таблицу 3-х уровней расширения и сворачивания с использованием html. Но расширенные строки идут вверх, это должно отображаться ниже. Я имею в виду, что он должен быть расширен один под другим. Пожалуйста, помогите мне решить эту проблему. Это должно выглядеть как показано ниже: я создал таблицу 3-х уровней расширения и сворачивания с использованием html. Но расширенные строки идут вверх, это должно отображаться ниже. Я имею в виду, что он должен быть расширен один под другим. Пожалуйста, помогите мне решить эту проблему. Это должно выглядеть так, как показано ниже:

введите описание изображения здесь

 $("tbody gt; tr:not([data-level='3'])").addClass("expandable sign folded"); $("tbody gt; tr:not([data-level='1'])").hide(); $("tbody gt; tr")  .css("padding-left", function (index) {  return 10 * parseInt($(this).data("level"), 10)   "px"; });  function range(lowEnd, highEnd) {  // assert lowEnd gt;= 0 and highEnd lt; 100  var validation = (lowEnd lt;= highEnd) amp;amp; (lowEnd gt;= 0) amp;amp; (highEnd lt; 100);  if (!(validation)) {  console.assert(validation,   'Function "range" received unlikely values: '    lowEnd   ' and '   highEnd   "...");  } else {  var arr = [];  while (lowEnd lt;= highEnd) {  arr.push(lowEnd  );  }  return arr;  } }  function name_range(fun, lowEnd, highEnd) {  var arr = range(lowEnd, highEnd);  jQuery.each(arr, function (index, value) {  arr[index] = fun(value);  });  return arr; }  function create_selector(level) {  return "[data-level='"   level   "']"; }  $("tr.expandable").click(function () {  var this_level = parseInt($(this).data("level"), 10);  var this_level_selector = create_selector(this_level);  var next_level_selector = create_selector(this_level   1);  var next_or_lower = name_range(create_selector,  this_level   1, 10); // TODO: find last level  var this_or_higher = name_range(create_selector, 0, this_level);  var node = $(this).prevUntil(this_or_higher.join(","));  // different behaviour according to state (expanded / folded):  if ($(this).hasClass("expanded")) {  $(this).removeClass("expanded").addClass('folded');  $(node).not("expanded").removeClass("expanded").addClass('folded');  $(node).filter(next_or_lower.join(",")).hide();  } else {  $(this).addClass("expanded").removeClass('folded');  $(node).filter(next_level_selector).show();  } }); 
 table, tr, td, th {  border: 1px solid black;  border-collapse:collapse;  border-color: gray; } tr:not([data-level='3']) {  cursor:pointer;  font-weight: bold; } tr.expanded .sign:after {  content:"-"; } tr.folded .sign:after {  content:" "; } td:first-child {  padding: inherit; } 
 lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"gt;lt;/scriptgt; lt;bodygt;  lt;tablegt;  lt;theadgt;  lt;trgt;  lt;thgt;Titlelt;/thgt;  lt;thgt;Titlelt;/thgt;  lt;/trgt;  lt;/theadgt; lt;tbodygt; lt;tr data-level='3'gt; lt;tdgt;contractor 1lt;/tdgt; lt;tdgt;18798736lt;/tdgt;  lt;/trgt; lt;tr data-level='2'gt; lt;tdgt;Sup twolt;span class="sign"gt;lt;/spangt; lt;/tdgt; lt;tdgt;18796789lt;/tdgt;  lt;/trgt; lt;tr data-level='2'gt; lt;tdgt;Sup onelt;/tdgt; lt;tdgt;18796789lt;/tdgt;  lt;/trgt; lt;tr data-level='1'gt; lt;tdgt;Mainlt;span class="sign"gt;lt;/spangt; lt;/tdgt; lt;tdgt;18798736lt;/tdgt;  lt;/trgt; 

Комментарии:

1. Очевидно, что html настроен в неправильном порядке. Почему это так, если вы хотите противоположного?

2. Измените порядок tr строк и измените prevUntil на nextUntil . В чем проблема?