javascript - 如何在 DataTables 的 FixedColumns 插件中交互式调整固定列的大小

标签 javascript jquery html datatables jquery-datatables

我有下表:

<table id="example" class="stripe row-border order-column" 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>
            <td>Tiger</td>
            <td>Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td>2011/04/25</td>
            <td>$320,800</td>
            <td>5421</td>
            <td>t.nixon@datatables.net</td>
        </tr>
    </tbody>
</table>

使用此脚本,我可以向前滚动第二列并固定第一列(名字)。

$(document).ready(function() {
    var table = $('#example').DataTable( {
        scrollY:        "300px",
        scrollX:        true,
        scrollCollapse: true,
        paging:         false
    } );
    new $.fn.dataTable.FixedColumns( table );
} );

JSFiddle

我想做的是手动动态调整第一列的大小。我怎样才能做到这一点?

enter image description here

最佳答案

FixedColumns API中没有本地方法去做这个。相反,通过 header() 设置宽度,这里将第一列设置为 200px :

table.tables().header().to$().find('th:eq(0)').css('min-width', '200px');
$(window).trigger('resize');

table.draw() 导致双滚动条(虽然在调整大小时消失)。不知何故,FixedColumns 没有完全包含在 draw() 中——甚至 FixedColumns update() 也没有做到这一点。但是在窗口上触发 resize 就可以了。

fork fiddle -> https://jsfiddle.net/k7err1vb/


更新。题意完全变了(?)

好吧,曾经有一个很棒的插件ColReorderWithResize.js , 但这对 dataTables 1.10.x 的效果不佳。因此,如果对可调整大小的固定列的需求必不可少,则可以降级。除了新的 API 和默认样式在 1.9.x 和 1.10.x 之间没有太大区别 - 我自己在项目中使用 1.9.x 正是因为需要 ColReorderWithResize

有人制作了一个 colResize 插件 -> https://github.com/Silvacom/colResize 适用于 1.10.2 及更高版本。这里用在 OP 的 fiddle 上:

var table = $('#example').DataTable( {
    dom: 'Zlfrtip',
    //target first column only
    colResize: {
       exclude: [2,3,4,5,6,7]
    },
    ...
})

演示 -> https://jsfiddle.net/mhco0xzs/ 它“有效” - 不知何故 - 但不如旧的 ColReorderWithResize.js 流畅。有人可以接受重构 ColReorderWithResize.js 的挑战,但我本人目前肯定没有时间。

关于javascript - 如何在 DataTables 的 FixedColumns 插件中交互式调整固定列的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411162/

相关文章:

javascript - 在浏览器窗口/选项卡关闭上打开自定义弹出窗口

javascript - 如何按回车键提交数据(jQuery)?

php - 我可以将关联数组放入要在 PHP 中处理的表单输入中吗?

javascript - 是否可以从字形图标创建自定义光标?

javascript - 我可以使用 HTML5 发送客户端电子邮件吗?

javascript - 当 'user-scalable' 设置为 yes 时检测双指缩放

jquery - 抓取网站|如何创建 JSON 文件?

html - Bootstrap 3 模态显示透明背景

javascript - 由于 JS 返回 false,链接不可点击

javascript - Parse Javascript Cloud Code .save() 仅适用于单个用户