Как изменить группу строк Datatables, чтобы разрешить только 1 открытую группу?

Я использую этот скрипт для расширения/расширения групп строк в таблицах данных.

var collapsedGroups = {}; //1

rowGroup: {
    // Uses the 'row group' plugin
    dataSrc: 'data',
    startRender: function(rows, group) {
        var collapsed = !!collapsedGroups[group]; //2
         
    //LOOP THREW EAH ROW
    rows.nodes().each(function (r) {
        //SET DISPLAY = NONE
        r.style.display = 'none';
        //IF COLLAPSED (OPEN)
        if (collapsed) {
          //SET DISPLAY = SHOW
          r.style.display = '';
        }
    });

   // Add category name to the <tr>. NOTE: Hardcoded colspan
  return $('<tr/>')
     .append('<td></td>')
     .attr('data-name', group)
     .toggleClass('collapsed', collapsed);
  }
},

//ON CLICK BTN EXPAND
$(document).on('click', 'i.fa-angle-down', function() {
    //GET TR DATA NAME
    var name = $(this).parent('td').parent('tr').data('name');
    //
    collapsedGroups[name] = !collapsedGroups[name]; //3
    //
    table.draw(false);
});

С помощью этого кода я могу открыть несколько групп одновременно.
Теперь я стараюсь, чтобы одновременно была открыта только одна группа.

Я попытался изменить obj CollapdGroups на var:

var collapsedGroup; //1
var collapsed = collapsedGroup; //2
collapsedGroup = name; //3

Но это не сработало.
Как я могу изменить код, чтобы разрешить только одну открытую группу за раз?

JS СКРИПКА
https://jsfiddle.net/lbriquet/k2zr5Lws/1/

Можете ли вы создать полный фрагмент с помощью инструмента [<>]?

Simone Rossaini 19.04.2023 11:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно собрать data-name из <tr> в событии завершения розыгрыша, а затем при нажатии <tr> изменить collapsedGroups другого имени на ложное, например:

$(document).ready(function() {
  var collapsedGroups = {};

  var table = $('#example').DataTable({
    paging: false,
    order: [
      [2, 'asc']
    ],
    rowGroup: {
      // Uses the 'row group' plugin
      dataSrc: 2,
      startRender: function(rows, group) {
        var collapsed = !!collapsedGroups[group];
        rows.nodes().each(function(r) {
          r.style.display = 'none';
          if (collapsed) {
            r.style.display = '';
          }
        });

        // Add category name to the <tr>. NOTE: Hardcoded colspan
        return $('<tr/>')
          .append('<td colspan = "8">' + group + ' (' + rows.count() + ')</td>')
          .attr('data-name', group)
          .toggleClass('collapsed', collapsed);
      }
    }
  });
  let namesTable = [];
  $('#example').on('draw.dt', function() {
    namesTable = [...document.querySelectorAll('#example tr[data-name]')].map(el => el.dataset.name);
  });

  $('#example tbody').on('click', 'tr.group-start', function() {
    var name = $(this).data('name');
    namesTable.forEach(el => {
      if (el !== name)
        collapsedGroups[el] = false;
    });
    collapsedGroups[name] = !collapsedGroups[name];
    table.draw(false);
  });

});
body {
  font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  color: #333;
  background-color: #fff;
}
<script type = "text/javascript" src = "//code.jquery.com/jquery-1.9.1.js"></script>

<link rel = "stylesheet" type = "text/css" href = "/css/result-light.css">

<link rel = "stylesheet" type = "text/css" href = "//nightly.datatables.net/css/jquery.dataTables.css">
<script type = "text/javascript" src = "//nightly.datatables.net/js/jquery.dataTables.js"></script>
<link rel = "stylesheet" type = "text/css" href = "//cdn.datatables.net/rowgroup/1.0.2/css/rowGroup.dataTables.min.css">
<script type = "text/javascript" src = "//cdn.datatables.net/rowgroup/1.0.2/js/dataTables.rowGroup.min.js"></script>
<script type = "text/javascript" src = "https://cdn.datatables.net/buttons/1.2.2/js/buttons.html5.js"></script>
<script type = "text/javascript" src = "//cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.32/pdfmake.min.js"></script>
<link rel = "stylesheet" type = "text/css" href = "//cdn.datatables.net/buttons/1.5.1/css/buttons.dataTables.css">
<script type = "text/javascript" src = "//cdn.datatables.net/buttons/1.5.1/js/dataTables.buttons.js"></script>
<script type = "text/javascript" src = "//cdn.datatables.net/buttons/1.5.1/js/buttons.colVis.min.js"></script>
<script type = "text/javascript" src = "//cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script type = "text/javascript" src = "//cdn.datatables.net/buttons/1.5.1/js/buttons.colVis.min.js"></script>

<div class = "container">
  <table id = "example" class = "display" style = "width:100%">
    <thead>
      <tr>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Age</th>
        <th>Start date</th>
        <th>Salary</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td data-search = "Tiger Nixon">T. Nixon</td>
        <td>System Architect</td>
        <td>Edinburgh</td>
        <td>61</td>
        <td data-order = "1303689600">Mon 25th Apr 11</td>
        <td data-order = "320800">$320,800/y</td>
      </tr>
      <tr>
        <td data-search = "Garrett Winters">G. Winters</td>
        <td>Accountant</td>
        <td>Tokyo</td>
        <td>63</td>
        <td data-order = "1311552000">Mon 25th Jul 11</td>
        <td data-order = "170750">$170,750/y</td>
      </tr>
      <tr>
        <td data-search = "Ashton Cox">A. Cox</td>
        <td>Junior Technical Author</td>
        <td>San Francisco</td>
        <td>66</td>
        <td data-order = "1231718400">Mon 12th Jan 09</td>
        <td data-order = "86000">$86,000/y</td>
      </tr>
      <tr>
        <td data-search = "Cedric Kelly">C. Kelly</td>
        <td>Senior Javascript Developer</td>
        <td>Edinburgh</td>
        <td>22</td>
        <td data-order = "1332979200">Thu 29th Mar 12</td>
        <td data-order = "433060">$433,060/y</td>
      </tr>
      <tr>
        <td data-search = "Airi Satou">A. Satou</td>
        <td>Accountant</td>
        <td>Tokyo</td>
        <td>33</td>
        <td data-order = "1227830400">Fri 28th Nov 08</td>
        <td data-order = "162700">$162,700/y</td>
      </tr>
      <tr>
        <td data-search = "Brielle Williamson">B. Williamson</td>
        <td>Integration Specialist</td>
        <td>New York</td>
        <td>61</td>
        <td data-order = "1354406400">Sun 2nd Dec 12</td>
        <td data-order = "372000">$372,000/y</td>
      </tr>
      <tr>
        <td data-search = "Herrod Chandler">H. Chandler</td>
        <td>Sales Assistant</td>
        <td>San Francisco</td>
        <td>59</td>
        <td data-order = "1344211200">Mon 6th Aug 12</td>
        <td data-order = "137500">$137,500/y</td>
      </tr>
      <tr>
        <td data-search = "Rhona Davidson">R. Davidson</td>
        <td>Integration Specialist</td>
        <td>Tokyo</td>
        <td>55</td>
        <td data-order = "1287014400">Thu 14th Oct 10</td>
        <td data-order = "327900">$327,900/y</td>
      </tr>
      <tr>
        <td data-search = "Colleen Hurst">C. Hurst</td>
        <td>Javascript Developer</td>
        <td>San Francisco</td>
        <td>39</td>
        <td data-order = "1252972800">Tue 15th Sep 09</td>
        <td data-order = "205500">$205,500/y</td>
      </tr>
      <tr>
        <td data-search = "Sonya Frost">S. Frost</td>
        <td>Software Engineer</td>
        <td>Edinburgh</td>
        <td>23</td>
        <td data-order = "1229126400">Sat 13th Dec 08</td>
        <td data-order = "103600">$103,600/y</td>
      </tr>
      <tr>
        <td data-search = "Jena Gaines">J. Gaines</td>
        <td>Office Manager</td>
        <td>London</td>
        <td>30</td>
        <td data-order = "1229644800">Fri 19th Dec 08</td>
        <td data-order = "90560">$90,560/y</td>
      </tr>
      <tr>
        <td data-search = "Quinn Flynn">Q. Flynn</td>
        <td>Support Lead</td>
        <td>Edinburgh</td>
        <td>22</td>
        <td data-order = "1362268800">Sun 3rd Mar 13</td>
        <td data-order = "342000">$342,000/y</td>
      </tr>
      <tr>
        <td data-search = "Charde Marshall">C. Marshall</td>
        <td>Regional Director</td>
        <td>San Francisco</td>
        <td>36</td>
        <td data-order = "1224115200">Thu 16th Oct 08</td>
        <td data-order = "470600">$470,600/y</td>
      </tr>
      <tr>
        <td data-search = "Haley Kennedy">H. Kennedy</td>
        <td>Senior Marketing Designer</td>
        <td>London</td>
        <td>43</td>
        <td data-order = "1355788800">Tue 18th Dec 12</td>
        <td data-order = "313500">$313,500/y</td>
      </tr>
      <tr>
        <td data-search = "Tatyana Fitzpatrick">T. Fitzpatrick</td>
        <td>Regional Director</td>
        <td>London</td>
        <td>19</td>
        <td data-order = "1268784000">Wed 17th Mar 10</td>
        <td data-order = "385750">$385,750/y</td>
      </tr>
      <tr>
        <td data-search = "Michael Silva">M. Silva</td>
        <td>Marketing Designer</td>
        <td>London</td>
        <td>66</td>
        <td data-order = "1353974400">Tue 27th Nov 12</td>
        <td data-order = "198500">$198,500/y</td>
      </tr>
      <tr>
        <td data-search = "Paul Byrd">P. Byrd</td>
        <td>Chief Financial Officer (CFO)</td>
        <td>New York</td>
        <td>64</td>
        <td data-order = "1276041600">Wed 9th Jun 10</td>
        <td data-order = "725000">$725,000/y</td>
      </tr>
      <tr>
        <td data-search = "Gloria Little">G. Little</td>
        <td>Systems Administrator</td>
        <td>New York</td>
        <td>59</td>
        <td data-order = "1239321600">Fri 10th Apr 09</td>
        <td data-order = "237500">$237,500/y</td>
      </tr>
      <tr>
        <td data-search = "Bradley Greer">B. Greer</td>
        <td>Software Engineer</td>
        <td>London</td>
        <td>41</td>
        <td data-order = "1350086400">Sat 13th Oct 12</td>
        <td data-order = "132000">$132,000/y</td>
      </tr>
      <tr>
        <td data-search = "Dai Rios">D. Rios</td>
        <td>Personnel Lead</td>
        <td>Edinburgh</td>
        <td>35</td>
        <td data-order = "1348617600">Wed 26th Sep 12</td>
        <td data-order = "217500">$217,500/y</td>
      </tr>
      <tr>
        <td data-search = "Jenette Caldwell">J. Caldwell</td>
        <td>Development Lead</td>
        <td>New York</td>
        <td>30</td>
        <td data-order = "1315008000">Sat 3rd Sep 11</td>
        <td data-order = "345000">$345,000/y</td>
      </tr>
      <tr>
        <td data-search = "Yuri Berry">Y. Berry</td>
        <td>Chief Marketing Officer (CMO)</td>
        <td>New York</td>
        <td>40</td>
        <td data-order = "1245888000">Thu 25th Jun 09</td>
        <td data-order = "675000">$675,000/y</td>
      </tr>
      <tr>
        <td data-search = "Caesar Vance">C. Vance</td>
        <td>Pre-Sales Support</td>
        <td>New York</td>
        <td>21</td>
        <td data-order = "1323648000">Mon 12th Dec 11</td>
        <td data-order = "106450">$106,450/y</td>
      </tr>
      <tr>
        <td data-search = "Doris Wilder">D. Wilder</td>
        <td>Sales Assistant</td>
        <td>Sidney</td>
        <td>23</td>
        <td data-order = "1284940800">Mon 20th Sep 10</td>
        <td data-order = "85600">$85,600/y</td>
      </tr>
      <tr>
        <td data-search = "Angelica Ramos">A. Ramos</td>
        <td>Chief Executive Officer (CEO)</td>
        <td>London</td>
        <td>47</td>
        <td data-order = "1255046400">Fri 9th Oct 09</td>
        <td data-order = "1200000">$1,200,000/y</td>
      </tr>
      <tr>
        <td data-search = "Gavin Joyce">G. Joyce</td>
        <td>Developer</td>
        <td>Edinburgh</td>
        <td>42</td>
        <td data-order = "1292976000">Wed 22nd Dec 10</td>
        <td data-order = "92575">$92,575/y</td>
      </tr>
      <tr>
        <td data-search = "Jennifer Chang">J. Chang</td>
        <td>Regional Director</td>
        <td>Singapore</td>
        <td>28</td>
        <td data-order = "1289692800">Sun 14th Nov 10</td>
        <td data-order = "357650">$357,650/y</td>
      </tr>
      <tr>
        <td data-search = "Brenden Wagner">B. Wagner</td>
        <td>Software Engineer</td>
        <td>San Francisco</td>
        <td>28</td>
        <td data-order = "1307404800">Tue 7th Jun 11</td>
        <td data-order = "206850">$206,850/y</td>
      </tr>
      <tr>
        <td data-search = "Fiona Green">F. Green</td>
        <td>Chief Operating Officer (COO)</td>
        <td>San Francisco</td>
        <td>48</td>
        <td data-order = "1268265600">Thu 11th Mar 10</td>
        <td data-order = "850000">$850,000/y</td>
      </tr>
      <tr>
        <td data-search = "Shou Itou">S. Itou</td>
        <td>Regional Marketing</td>
        <td>Tokyo</td>
        <td>20</td>
        <td data-order = "1313280000">Sun 14th Aug 11</td>
        <td data-order = "163000">$163,000/y</td>
      </tr>
      <tr>
        <td data-search = "Michelle House">M. House</td>
        <td>Integration Specialist</td>
        <td>Sidney</td>
        <td>37</td>
        <td data-order = "1306972800">Thu 2nd Jun 11</td>
        <td data-order = "95400">$95,400/y</td>
      </tr>
      <tr>
        <td data-search = "Suki Burks">S. Burks</td>
        <td>Developer</td>
        <td>London</td>
        <td>53</td>
        <td data-order = "1256169600">Thu 22nd Oct 09</td>
        <td data-order = "114500">$114,500/y</td>
      </tr>
      <tr>
        <td data-search = "Prescott Bartlett">P. Bartlett</td>
        <td>Technical Author</td>
        <td>London</td>
        <td>27</td>
        <td data-order = "1304726400">Sat 7th May 11</td>
        <td data-order = "145000">$145,000/y</td>
      </tr>
      <tr>
        <td data-search = "Gavin Cortez">G. Cortez</td>
        <td>Team Leader</td>
        <td>San Francisco</td>
        <td>22</td>
        <td data-order = "1224979200">Sun 26th Oct 08</td>
        <td data-order = "235500">$235,500/y</td>
      </tr>
      <tr>
        <td data-search = "Martena Mccray">M. Mccray</td>
        <td>Post-Sales support</td>
        <td>Edinburgh</td>
        <td>46</td>
        <td data-order = "1299628800">Wed 9th Mar 11</td>
        <td data-order = "324050">$324,050/y</td>
      </tr>
      <tr>
        <td data-search = "Unity Butler">U. Butler</td>
        <td>Marketing Designer</td>
        <td>San Francisco</td>
        <td>47</td>
        <td data-order = "1260316800">Wed 9th Dec 09</td>
        <td data-order = "85675">$85,675/y</td>
      </tr>
      <tr>
        <td data-search = "Howard Hatfield">H. Hatfield</td>
        <td>Office Manager</td>
        <td>San Francisco</td>
        <td>51</td>
        <td data-order = "1229385600">Tue 16th Dec 08</td>
        <td data-order = "164500">$164,500/y</td>
      </tr>
      <tr>
        <td data-search = "Hope Fuentes">H. Fuentes</td>
        <td>Secretary</td>
        <td>San Francisco</td>
        <td>41</td>
        <td data-order = "1265932800">Fri 12th Feb 10</td>
        <td data-order = "109850">$109,850/y</td>
      </tr>
      <tr>
        <td data-search = "Vivian Harrell">V. Harrell</td>
        <td>Financial Controller</td>
        <td>San Francisco</td>
        <td>62</td>
        <td data-order = "1234569600">Sat 14th Feb 09</td>
        <td data-order = "452500">$452,500/y</td>
      </tr>
      <tr>
        <td data-search = "Timothy Mooney">T. Mooney</td>
        <td>Office Manager</td>
        <td>London</td>
        <td>37</td>
        <td data-order = "1228953600">Thu 11th Dec 08</td>
        <td data-order = "136200">$136,200/y</td>
      </tr>
      <tr>
        <td data-search = "Jackson Bradshaw">J. Bradshaw</td>
        <td>Director</td>
        <td>New York</td>
        <td>65</td>
        <td data-order = "1222387200">Fri 26th Sep 08</td>
        <td data-order = "645750">$645,750/y</td>
      </tr>
      <tr>
        <td data-search = "Olivia Liang">O. Liang</td>
        <td>Support Engineer</td>
        <td>Singapore</td>
        <td>64</td>
        <td data-order = "1296691200">Thu 3rd Feb 11</td>
        <td data-order = "234500">$234,500/y</td>
      </tr>
      <tr>
        <td data-search = "Bruno Nash">B. Nash</td>
        <td>Software Engineer</td>
        <td>London</td>
        <td>38</td>
        <td data-order = "1304380800">Tue 3rd May 11</td>
        <td data-order = "163500">$163,500/y</td>
      </tr>
      <tr>
        <td data-search = "Sakura Yamamoto">S. Yamamoto</td>
        <td>Support Engineer</td>
        <td>Tokyo</td>
        <td>37</td>
        <td data-order = "1250640000">Wed 19th Aug 09</td>
        <td data-order = "139575">$139,575/y</td>
      </tr>
      <tr>
        <td data-search = "Thor Walton">T. Walton</td>
        <td>Developer</td>
        <td>New York</td>
        <td>61</td>
        <td data-order = "1376179200">Sun 11th Aug 13</td>
        <td data-order = "98540">$98,540/y</td>
      </tr>
      <tr>
        <td data-search = "Finn Camacho">F. Camacho</td>
        <td>Support Engineer</td>
        <td>San Francisco</td>
        <td>47</td>
        <td data-order = "1246924800">Tue 7th Jul 09</td>
        <td data-order = "87500">$87,500/y</td>
      </tr>
      <tr>
        <td data-search = "Serge Baldwin">S. Baldwin</td>
        <td>Data Coordinator</td>
        <td>Singapore</td>
        <td>64</td>
        <td data-order = "1333929600">Mon 9th Apr 12</td>
        <td data-order = "138575">$138,575/y</td>
      </tr>
      <tr>
        <td data-search = "Zenaida Frank">Z. Frank</td>
        <td>Software Engineer</td>
        <td>New York</td>
        <td>63</td>
        <td data-order = "1262563200">Mon 4th Jan 10</td>
        <td data-order = "125250">$125,250/y</td>
      </tr>
      <tr>
        <td data-search = "Zorita Serrano">Z. Serrano</td>
        <td>Software Engineer</td>
        <td>San Francisco</td>
        <td>56</td>
        <td data-order = "1338508800">Fri 1st Jun 12</td>
        <td data-order = "115000">$115,000/y</td>
      </tr>
      <tr>
        <td data-search = "Jennifer Acosta">J. Acosta</td>
        <td>Junior Javascript Developer</td>
        <td>Edinburgh</td>
        <td>43</td>
        <td data-order = "1359676800">Fri 1st Feb 13</td>
        <td data-order = "75650">$75,650/y</td>
      </tr>
      <tr>
        <td data-search = "Cara Stevens">C. Stevens</td>
        <td>Sales Assistant</td>
        <td>New York</td>
        <td>46</td>
        <td data-order = "1323129600">Tue 6th Dec 11</td>
        <td data-order = "145600">$145,600/y</td>
      </tr>
      <tr>
        <td data-search = "Hermione Butler">H. Butler</td>
        <td>Regional Director</td>
        <td>London</td>
        <td>47</td>
        <td data-order = "1300665600">Mon 21st Mar 11</td>
        <td data-order = "356250">$356,250/y</td>
      </tr>
      <tr>
        <td data-search = "Lael Greer">L. Greer</td>
        <td>Systems Administrator</td>
        <td>London</td>
        <td>21</td>
        <td data-order = "1235692800">Fri 27th Feb 09</td>
        <td data-order = "103500">$103,500/y</td>
      </tr>
      <tr>
        <td data-search = "Jonas Alexander">J. Alexander</td>
        <td>Developer</td>
        <td>San Francisco</td>
        <td>30</td>
        <td data-order = "1279065600">Wed 14th Jul 10</td>
        <td data-order = "86500">$86,500/y</td>
      </tr>
      <tr>
        <td data-search = "Shad Decker">S. Decker</td>
        <td>Regional Director</td>
        <td>Edinburgh</td>
        <td>51</td>
        <td data-order = "1226534400">Thu 13th Nov 08</td>
        <td data-order = "183000">$183,000/y</td>
      </tr>
      <tr>
        <td data-search = "Michael Bruce">M. Bruce</td>
        <td>Javascript Developer</td>
        <td>Singapore</td>
        <td>29</td>
        <td data-order = "1309132800">Mon 27th Jun 11</td>
        <td data-order = "183000">$183,000/y</td>
      </tr>
      <tr>
        <td data-search = "Donna Snider">D. Snider</td>
        <td>Customer Support</td>
        <td>New York</td>
        <td>27</td>
        <td data-order = "1295913600">Tue 25th Jan 11</td>
        <td data-order = "112000">$112,000/y</td>
      </tr>
    </tbody>
    <tfoot>
      <tr>
        <th>Name</th>
        <th>Position</th>
        <th>Office</th>
        <th>Age</th>
        <th>Start date</th>
        <th>Salary</th>
      </tr>
    </tfoot>
  </table>
</div>

Я добавил код с чистым js (потому что я предпочитаю его), но вы можете изменить его с помощью jquery, если хотите.

Чтобы изменить группу строк Datatables, чтобы разрешить только одну открытую группу за раз, вам нужно отслеживать текущую открытую группу и закрывать другую, когда открывается другая группа. Я надеюсь, что код, которым я поделюсь ниже, решит вашу проблему.

var currentOpenGroup = null;
var collapsedGroups = {};

$('#example').DataTable({
    rowGroup: {
        dataSrc: 'group',
        startRender: function(rows, group) {
            var collapsed = !!collapsedGroups[group];

            if (group === currentOpenGroup) {
                collapsed = false;
            } else if (currentOpenGroup !== null && collapsedGroups[currentOpenGroup] === false) {
                collapsedGroups[currentOpenGroup] = true;
            }

            rows.nodes().each(function (r) {
                r.style.display = collapsed ? 'none' : '';
            });

            return $('<tr/>')
                .append('<td></td>')
                .attr('data-name', group)
                .toggleClass('collapsed', collapsed);
        }
    }
});

$(document).on('click', 'i.fa-angle-down', function() {
    var name = $(this).parent('td').parent('tr').data('name');

    if (name === currentOpenGroup) {
        currentOpenGroup = null;
        collapsedGroups[name] = true;
    } else {
        currentOpenGroup = name;
        for (var group in collapsedGroups) {
            if (group !== name) {
                collapsedGroups[group] = true;
            }
        }
        collapsedGroups[name] = false;
    }

    $('#example').DataTable().draw(false);
});

Ваш код не работает, проверьте его на скрипке.

Simone Rossaini 19.04.2023 13:58

Другие вопросы по теме