2012-02-26 2 views
5

Я пытаюсь получить плагин jQuery Tablesorter для работы с вложенными таблицами, где и внутренние, и внешние таблицы могут быть отсортированы. Каждая строка внешней таблицы обычно содержит кнопку, которая при щелчке показывает скрытую внутреннюю таблицу в строке чуть ниже (хотя я пропустил кнопку в HTML ниже для простоты, делая все изначально видимым).Вложенные таблицы jQuery Tablesorter, все сортируемые

Внутренняя таблица находится в строке с классом «expand-child», которая сообщает Tablesorter о том, чтобы сохранить ее рядом с ней при сортировке. Это в основном работает, но внешние заголовки таблицы не выделяются правильно при нажатии, а внутренняя таблица вообще не сортируется.

Я знаю о this SO question, и это одно решение - отключить сортировку во внутренней таблице, но я хочу, чтобы как внешняя, так и внутренняя таблицы были отсортированы.

Мой HTML ниже, и я также создал jsfiddle, отображающий проблему. Спасибо за любую помощь.

<table class="tablesorter"> 
    <thead> 
     <tr> 
      <th>Make</th> 
      <th>Model</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td>Honda</td> 
      <td>Accord</td> 
     </tr> 
     <tr class="expand-child"> 
      <td colspan="2" style="padding: 0 30px 0 30px;"> 
       <table class="tablesorter"> 
        <thead> 
         <tr> 
          <th>Doors</th> 
          <th>Colors</th> 
         </tr> 
        </thead> 
        <tbody> 
         <tr> 
          <td>Honda 2-Door</td> 
          <td>Honda Red</td> 
         </tr> 
         <tr> 
          <td>Honda 4-Door</td> 
          <td>Honda Blue</td> 
         </tr> 
        </tbody> 
       </table> 
      </td> 
     </tr> 
     <tr> 
      <td>Toyota</td> 
      <td>Camry</td> 
     </tr> 
     <tr class="expand-child"> 
      <td colspan="2" style="padding: 0 30px 0 30px;"> 
       <table class="tablesorter"> 
        <thead> 
         <tr> 
          <th>Doors</th> 
          <th>Colors</th> 
         </tr> 
        </thead> 
        <tbody> 
         <tr> 
          <td>Toyota 2-Door</td> 
          <td>Toyota Yellow</td> 
         </tr> 
         <tr> 
          <td>Toyota 4-Door</td> 
          <td>Toyota Green</td> 
         </tr> 
        </tbody> 
       </table> 
      </td> 
     </tr> 
    </tbody> 
</table> 

ответ

5

Я раздвоенный свой jsfiddle и обновляются с селекторами так как он заказывает, как я думаю, что вы хотите ... http://jsfiddle.net/P2DsY/

Вы можете видеть из моей вилки, что вы просто нужно быть конкретными с таблицей Конфигурация плагина сортировщика.

+0

Отлично, спасибо! Поиграв с jsfiddle немного, я вижу, что единственное изменение действительно необходимо добавить параметр tablesorter {selectorHeaders: '> thead> tr> th'}. По умолчанию это «thead th», который, как я понимаю, вызывает проблему, потому что внешняя таблица завершает выбор элементов во всех внутренних таблицах. Знаки> позволяют смотреть на своих прямых детей, а не на всех потомков. Интересно, вместо этого вместо этого должен быть ваш default. В любом случае, еще раз спасибо! –

+0

У меня возникла другая проблема с этим позже, когда я попытался отключить сортировку по первому заголовку столбца. Если вы добавите «headers: {0: {sorter: false}}», он отключит первый столбец всех таблиц, даже вложенных. Чтобы отключить их по отдельности, вместо этого добавьте встроенные метаданные в элемент : class = "{sorter: false}" (и включите jquery.metadata.js, как говорят в файлах tablesorter). –

+0

Что-то изменилось? Когда я нажимаю на заголовки таблиц в вашей скрипке, он не поддерживает родительские отношения с дочерью. –

Смежные вопросы