jQuery排序与延迟呈现



我使用一个jQuery插件(DataTable与滚动扩展),允许我显示HTML table与千行由于延迟渲染。

我想让它sortable(与可排序的jQuery-UI插件)。

问题是,当我拖动一个元素,并希望把它远远降低,表的第一个nodes从DOM消失,新的出现。所以我不能再拖放这个元素了

一个例子比长文本更好:http://jsfiddle.net/91dr6utg/

$(document).ready(function() {
    $('#example').DataTable( {
        data:           data,
        deferRender:    true,
        dom:            "frtiS",
        scrollY:        200,
        scrollCollapse: true
    } );
    
    $('#example tbody').sortable({
        helper: "clone",
        start: function (event, ui) {
            ui.item.appendTo($('#dragSave'));
            ui.helper.appendTo($('#dragSave'));
        },
    }).disableSelection();
});
var data = [ "A lot of datas !" ];
<table id="example" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>ID</th>
            <th>First name</th>
            <th>Last name</th>
            <th>ZIP / Post code</th>
            <th>Country</th>
        </tr>
    </thead>
</table>
<div id="dragSave"></div>
(在jsfiddle.net中试试,代码片段中允许的行太多了)

如果我拖拽第一个元素,我不能把它放到第90个元素之后。


更多信息:

我做了start函数来防止拖动的线消失。事实上,如果原来的node从DOM中删除,sortable插件不能再删除元素(它不再知道它了)。所以我把它移动到DOM的另一个容器中,这个容器永远不会更新。

如果我们删除这个函数,我们会看到原来的node被删除了大约50行
这是DOM再生的结果
但是我们仍然可以将元素放到
下90行
=>因为下一行永远不会在DOM中生成,这是限制

我找到了一种不使用sortable(),而是使用draggable()的方法。

网址:http://jsfiddle.net/2dtcy9bs/1/

相关内容

  • 没有找到相关文章

最新更新