2017-02-16 15 views
2
тд

У меня есть 3 колонки HTML таблицы и все TDs имеют класс:JQuery изменить порядок следования столбцов на основе класса

Как я могу поменять TD с классом «col1» и ТД класса «col2»?

Вот пример таблицы (пожалуйста, обратите внимание, что некоторые colspans):

<table width="650" border="0" cellspacing="3" cellpadding="0"> 
<tbody> 
    <tr> 
     <td colspan="3">header</td> 
     <td class="col2">header col2</td> 
     <td class="col3">header col3</td> 
     <td class="col1">header col1</td> 
    </tr> 
    <tr> 
     <td colspan="2">row header 1</td> 
     <td>&nbsp;</td> 
     <td class="col2">any text </td> 
     <td class="col3">any text </td> 
     <td class="col1">any text</td> 
    </tr> 
    <tr> 
     <td>row header 2</td> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
     <td class="col2">any text </td> 
     <td class="col3">any text </td> 
     <td class="col1">any text</td> 
    </tr> 
</tbody> 

Все, что я хочу сделать, это поменять TD.col1 с TD.col2 и отображения таблицы.

+0

Вы можете использовать [рода] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) для этого. Если вам нужен более конкретный пример, добавьте свой HTML-код вместе с JS, который вы уже пробовали –

+0

Спасибо, Рори, я добавил таблицу образцов, но я не знаю javascript или jquery, чтобы получить то, что мне нужно. – sweetman

+0

ОК - я добавил вам ответ –

ответ

1

Чтобы добиться того, что вам нужно вы можете выбрать все .col1 элементы, а затем использовать insertBefore(), чтобы переместить их перед братом .col2, как это:

$('.col1').each(function() { 
 
    $(this).insertBefore($(this).prev('.col2')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table width="650" border="0" cellspacing="3" cellpadding="0"> 
 
    <tbody> 
 
    <tr> 
 
     <td colspan="3">header</td> 
 
     <td class="col2">header col2</td> 
 
     <td class="col1">header col1</td> 
 
    </tr> 
 
    <tr> 
 
     <td colspan="2">row header 1</td> 
 
     <td>&nbsp;</td> 
 
     <td class="col2">any text col2</td> 
 
     <td class="col1">any text col1</td> 
 
    </tr> 
 
    <tr> 
 
     <td>row header 2</td> 
 
     <td>&nbsp;</td> 
 
     <td>&nbsp;</td> 
 
     <td class="col2">any text col2</td> 
 
     <td class="col1">any text col1</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

Мы почти там! это работает только на adiacent колонках. Как насчет неадресных столбцов? Это моя вина: извините. Я снова редактировал таблицу, чтобы сделать ее более похожей на мои потребности. – sweetman

+0

В этом случае измените 'prev()' на 'prevAll()' –

+0

отлично! Большое спасибо за вашу помощь. – sweetman

-1

Вы можете создать массив классов и Сортировка массива в соответствии с вашими потребностями, используя javascript.

+0

Моя проблема заключается в том, как сортировать столбцы, используя классы, а не индексы (поскольку существуют некоторые колпаны). Я искал все вокруг, но нашел только сортировку строк. – sweetman