按多个排序

时间:2017-02-02 16:57:31

标签: jquery sorting html-table tablesorter listjs

我需要按<table>分组<tbody>来对<table> <thead> <tr> <th>Header 1</th> <th>Header 2</th> </tr> </thead> <tbody class="listing-1"> <tr> <td>Blue widget</td> <td>1</td> </tr> <tr> <td colspan="2">text</td> </tr> </tbody> <tbody class="listing-2"> <tr> <td>Red Widget</td> <td>2</td> </tr> <tr> <td colspan="2">text</td> </tr> </tbody> <tbody class="listing-3"> <tr> <td>Blue widget</td> <td>3</td> </tr> <tr> <td colspan="2">text</td> </tr> </tbody> </table> 进行排序

这很简单,看起来像这样:

<tbody>

我正在将每个商家信息分组到<tr>,并希望对每个<tbody>锁定在一起的两个<td>的表进行排序。

如果我排序通过标题1获取顶部的蓝色小部件的<tbody>,我需要将每个<table> <thead> <tr> <th>Header 1</th> <th>Header 2</th> </tr> </thead> <tbody class="listing-1"> <tr> <td>Blue widget</td> <td>1</td> </tr> <tr> <td colspan="2">text</td> </tr> </tbody> <tbody class="listing-3"> <tr> <td>Blue widget</td> <td>3</td> </tr> <tr> <td colspan="2">text</td> </tr> </tbody> <tbody class="listing-2"> <tr> <td>Red Widget</td> <td>2</td> </tr> <tr> <td colspan="2">text</td> </tr> </tbody> </table> 的整个向上移动,所以它看起来像:

import bs4

html = '''<div><script bla bla></script><p>Hello all <a href ="xx"></a> <img rscr="xx"></img></p></div>'''

soup = bs4.BeautifulSoup(html, 'lxml')
soup.div.text, soup.div.find_next('a'), soup.div.find_next('img')
<我一直在使用ListJS(http://listjs.com/)对我的表进行排序,但它似乎不支持像这样分组tbody。然后我检查了TableSorter(https://mottie.github.io/tablesorter/),但这似乎也不支持它。

我对如何排序这个感到茫然,但我想我可以'是唯一一个想要做这样的事情的人。也许我问的是错误的问题?

关于如何做到这一点的任何帮助或建议,或者使用哪个插件都会非常棒。

编辑:排序的标准是每个中的第一个。每个中的第二个需要与每个中的第一个锁定在一起,而不是可排序的。因此,第二个不应该是可排序的,而应该与第一个锁定。

如果我仍然不清楚,请告诉我,我会再试一次。

1 个答案:

答案 0 :(得分:1)

目前尚不清楚排序标准是什么。假设它是第二个单元格中的数字可以执行以下操作:

var $tBodies = $('tbody').sort(function(a, b){     
         var aVal = +($(a).find('tr:first td').eq(1).text().trim() || 0); 
         var bVal = +($(b).find('tr:first td').eq(1).text().trim() || 0);            
         return aVal - bVal;
    });
    
    $('table').append($tBodies);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
    <thead>
        <tr>
            <th>Header 1</th>
            <th>Header 2</th>
        </tr>
    </thead>
    <tbody class="listing-1">
        <tr>
            <td>Blue widget</td>
            <td>1</td>
        </tr>
        <tr>
            <td colspan="2">text</td>
        </tr>
    </tbody>
    <tbody class="listing-3">
        <tr>
            <td>Blue widget</td>
            <td>3</td>
        </tr>
        <tr>
            <td colspan="2">text</td>
        </tr>
    </tbody>
    <tbody class="listing-2">
        <tr>
            <td>Red Widget</td>
            <td>2</td>
        </tr>
        <tr>
            <td colspan="2">text</td>
        </tr>
    </tbody>
</table>