jquery - 更改条目后数据表排序错误

标签 jquery twitter-bootstrap datatables

我正在使用https://datatables.net/显示一些数据。 当我更改数据(在本例中为年龄)时,排序不再正确。

有可能改变这种行为吗?

请点击例如表上的行来自“老虎尼克松”和年龄的变化。现在对列进行排序,它不正确。其他 示例位于:https://jsfiddle.net/rule_34/huv547j0/1/

$(document).ready(function() {
	// -----------------------------------------------------------------------
	$("#example").on('click','tr',function () {	
	   var line = $(this).attr('id');
	   var age = Math.floor(Math.random() * 99) + 1;

	   $("tr[id="+ line +"] td[data-element=age]").html(age); 
	});    
	// -----------------------------------------------------------------------      
	$('#example').DataTable(); // initialize
} );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.0.0/js/responsive.bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.0.0/js/dataTables.responsive.min.js"></script>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.datatables.net/1.10.10/css/dataTables.bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.datatables.net/responsive/2.0.0/css/responsive.bootstrap.min.css" rel="stylesheet"/>

<table id="example" class="table table-striped table-bordered " cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>First name</th>
                <th>Last name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
                <th>Extn.</th>
                <th>E-mail</th>
            </tr>
        </thead>
        <tbody>
            <tr id="0815">
                <td>Tiger</td>
                <td>Nixon</td>
                <td>System Architect</td>
                <td>Edinburgh</td>
                <td data-element="age">61</td>
                <td>2011/04/25</td>
                <td>$320,800</td>
                <td>5421</td>
                <td>t.nixon@datatables.net</td>
            </tr>
            <tr id="1234">
                <td>Garrett</td>
                <td>Winters</td>
                <td>Accountant</td>
                <td>Tokyo</td>
                <td data-element="age">63</td>
                <td>2011/07/25</td>
                <td>$170,750</td>
                <td>8422</td>
                <td>g.winters@datatables.net</td>
            </tr>
            <tr id="2587">
                <td>Ashton</td>
                <td>Cox</td>
                <td>Junior Technical Author</td>
                <td>San Francisco</td>
                <td data-element="age">66</td>
                <td>2009/01/12</td>
                <td>$86,000</td>
                <td>1562</td>
                <td>a.cox@datatables.net</td>
            </tr>
            <tr id="3698">
                <td>Cedric</td>
                <td>Kelly</td>
                <td>Senior Javascript Developer</td>
                <td>Edinburgh</td>
                <td data-element="age">22</td>
                <td>2012/03/29</td>
                <td>$433,060</td>
                <td>6224</td>
                <td>c.kelly@datatables.net</td>
            </tr>
            <tr id="8547">
                <td>Airi</td>
                <td>Satou</td>
                <td>Accountant</td>
                <td>Tokyo</td>
                <td data-element="age">33</td>
                <td>2008/11/28</td>
                <td>$162,700</td>
                <td>5407</td>
                <td>a.satou@datatables.net</td>
            </tr>
            <tr id="5254">
                <td>Brielle</td>
                <td>Williamson</td>
                <td>Integration Specialist</td>
                <td>New York</td>
                <td data-element="age">61</td>
                <td>2012/12/02</td>
                <td>$372,000</td>
                <td>4804</td>
                <td>b.williamson@datatables.net</td>
            </tr>
            <tr id="4785">
                <td>Herrod</td>
                <td>Chandler</td>
                <td>Sales Assistant</td>
                <td>San Francisco</td>
                <td data-element="age">59</td>
                <td>2012/08/06</td>
                <td>$137,500</td>
                <td>9608</td>
                <td>h.chandler@datatables.net</td>
            </tr>
            <tr id="2312">
                <td>Rhona</td>
                <td>Davidson</td>
                <td>Integration Specialist</td>
                <td>Tokyo</td>
                <td data-element="age">55</td>
                <td>2010/10/14</td>
                <td>$327,900</td>
                <td>6200</td>
                <td>r.davidson@datatables.net</td>
            </tr>
        </tbody>
    </table>

感谢@Nouphal.M 的注释:fnUpdate。有了这些信息,我建立了一个新的: https://jsfiddle.net/rule_34/2L38yb98/1/

这也无法正常工作,因为我总是得到错误的表格行,但排序可以正常工作。

那么,即使我更改排序列,如何获取更新行

最佳答案

在数据表网站中,它说您更改数据表后需要更新

Description If the data in the host DataTable changes, the FixedColumns must be updated to reflect this new data. This method provides the ability, simply redrawing the fixed columns with the latest data in the DataTable.

将来,一旦 DataTables 添加了表更新操作的事件,此操作就会自动化,但目前必须调用此方法。

并使用此函数来实现

fixedColumns().update()

示例代码如下:

var table = $('#myTable').DataTable();     
table.cell( 0, 0 ).data( 'New data' ).draw();
table.fixedColumns().update();

关于jquery - 更改条目后数据表排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655821/

相关文章:

javascript - jQuery 从无序列表中删除所有列表项

javascript - 如何让 Twitter Bootstrap 的模式在 iPhone 上正确显示?

html - 低于 768px 的设备上的 Bootstrap 网格系统问题

jquery-plugins - 在单个项目中使用 Bootstrap 和 Fancybox

JQuery DataTables - 删除 fnFilter 并显示所有结果

javascript - Jquery Datatable 排序不适用于 html 元素

php - 如何从DataTables行中获取值?

javascript - 如何在点击时访问任何按钮的 ID?

javascript - 在动态生成的 div 周围包裹 anchor 标记

jquery - 将不透明度从 0 动画化到 1,然后再返回