【问题标题】:Table sorting issue on hidden row隐藏行上的表格排序问题
【发布时间】:2016-09-25 02:17:46
【问题描述】:

Example Fiddle

隐藏行的表格排序问题。我创造了小提琴。请帮忙。

function sortTable(f, n) {
    var rows = $('.videolisttble tbody  tr').get();
    rows.sort(function (a, b) {
        var A = getVal(a);
        var B = getVal(b);
        if (A < B) {
            return -1 * f;
        }
        if (A > B) {
            return 1 * f;
        }
        return 0;
    });

    function getVal(elm) {
        var v = $(elm).children('td').eq(n).text().toUpperCase();
        if ($.isNumeric(v)) {
            v = parseInt(v, 10);
        }
        return v;
    }

    $.each(rows, function (index, row) {
        $('.videolisttble').children('tbody').append(row);
    });
}

var f_sl = 1;
var f_nm = 1;

$(".matchhead").click(function () {
    f_sl *= -1;
    var n = $(this).prevAll().length;
    sortTable(f_sl, n);
});

$(".timehead").click(function () {
    f_nm *= -1;
    var n = $(this).prevAll().length;
    sortTable(f_nm, n);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" rel="stylesheet"/>

<h2> Before sorting</h2>
  
<table class="table table-responsive videolisttble dataTable no-footer" id="DataTables_Table_0">
		<thead>
			<tr><th class="matchhead">Match</th><th class="timehead">Date &amp; Time</th><th> Action</th></tr>
		</thead>
		<tbody>	
		 
			<tr class="manageiconswrap" role="row">
				<td>D Team  vs Team E</td>
				<td>Tuesday March 15th, 2016, 05:00 PM</td>
				<td class="actioncont">										
				</td>
			</tr>					
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">D Team</td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">Team E</td>
			</tr>
			<tr class="manageiconswrap">
				<td>C Team  vs Team F</td>
				<td>Sunday October 18th, 2015, 03:00 PM</td>
				<td class="actioncont"></td>
			</tr>	

			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">C Team</td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">Team F</td>
			</tr>
			<tr class="manageiconswrap">
				<td>A Team  vs Team B</td>
				<td>Sunday October 18th, 2015, 03:00 PM</td>
				<td class="actioncont"></td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">A Team</td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">Team B</td>
			</tr>
	  
	</tbody>
</table>
  
  
  	
<h2> After sorting</h2>


<table class="table table-responsive  dataTable no-footer" id="DataTables_Table_0">
		<thead>
			<tr><th class="">Match</th><th class="">Date &amp; Time</th><th> Action</th></tr>
		</thead>
		<tbody>	
			
			
			<tr class="manageiconswrap">
				<td>A Team  vs Team B</td>
				<td>Sunday October 18th, 2015, 03:00 PM</td>
				<td class="actioncont"></td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">A Team</td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">Team B</td>
			</tr>
			<tr class="manageiconswrap">
				<td>C Team  vs Team F</td>
				<td>Sunday October 18th, 2015, 03:00 PM</td>
				<td class="actioncont"></td>
			</tr>	

			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">C Team</td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">Team F</td>
			</tr>
			<tr class="manageiconswrap" role="row">
				<td>D Team  vs Team E</td>
				<td>Tuesday March 15th, 2016, 05:00 PM</td>
				<td class="actioncont">										
				</td>
			</tr>					
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">D Team</td>
			</tr>
			<tr class="donotsort">
				<td colspan="3" style="display:none;"class="toggledropcont">Team E</td>
			</tr>
	  
	</tbody>
</table>

【问题讨论】:

  • 请描述您的问题..
  • @ZakariaAcharki 请点击小提琴中的表头。你会理解我的问题

标签: javascript jquery html html-table


【解决方案1】:

Working fiddle

由于嵌套表,该函数会在表行之间混淆,并且还会对子表行进行排序,以避免您必须将选择器更改为仅定位 .videolisttble 直接行。

使用&gt; 符号来定位直接子代:

var rows = $('.videolisttble>tbody>tr').get();

希望这会有所帮助。

【讨论】:

  • 但每个隐藏行都应该附加在 manageiconswrap 类旁边
  • 好的,请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多