Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在延迟加载的表上使用jQueryUI的可排序功能?_Jquery_Jquery Ui_Lazy Loading_Jquery Ui Sortable_Jquery Ui Draggable - Fatal编程技术网

如何在延迟加载的表上使用jQueryUI的可排序功能?

如何在延迟加载的表上使用jQueryUI的可排序功能?,jquery,jquery-ui,lazy-loading,jquery-ui-sortable,jquery-ui-draggable,Jquery,Jquery Ui,Lazy Loading,Jquery Ui Sortable,Jquery Ui Draggable,我需要创建一个表,该表使用延迟加载而不是分页来动态显示初始加载之外的内容,并通过jQueryUI的可排序功能进行排序 延迟加载是通过检查scrollTop和scrollHeight来确定用户离页面底部的距离来实现的。当它们足够接近时,我会调用AJAX来获取另一组数据,并将其作为表行附加到表的末尾 我在表上实现了jQuery UI sortable,但问题是它不允许我将TR拖过原始表中的最后一个TR。它记得哪个TR是最后一个孩子,然后阻止我超越那个 下次我尝试拖动TR时,它知道新的端点在哪里,但是

我需要创建一个表,该表使用延迟加载而不是分页来动态显示初始加载之外的内容,并通过jQueryUI的可排序功能进行排序

延迟加载是通过检查scrollTop和scrollHeight来确定用户离页面底部的距离来实现的。当它们足够接近时,我会调用AJAX来获取另一组数据,并将其作为表行附加到表的末尾

我在表上实现了jQuery UI sortable,但问题是它不允许我将TR拖过原始表中的最后一个TR。它记得哪个TR是最后一个孩子,然后阻止我超越那个

下次我尝试拖动TR时,它知道新的端点在哪里,但是当我加载更多时,我遇到了同样的问题

我想发生的是,当用户拖动一个TR时,表可以延迟加载一些新数据,用户可以继续拖动到新的数据集,因为它们必须不断地拖动才能再次开始拖动,这似乎有点不方便

我有一种感觉,这将需要对可排序函数中的代码进行根本性的更改,但我希望有人可能已经找到了解决这个问题的方法


更新:我尝试使用connectWith选项。我没有将动态加载的行添加到同一个TBODY中,而是将它们放在它们自己的TBODY中,该TBODY也是可排序的,并使用connectWith选项对所有TBODY元素设置新的和原始的TBODY。不幸的是,这并没有起到任何不同的作用。在删除TR后,我仍然可以在整个表中拖动,但不能在原始拖动上下文中拖动。这是令人沮丧的,因为它不是一个很好的用户体验。

我在一周前写了一篇文章-我自己的jQuery表分类器:asc/desc

function sortTableJquery()
 {
    var tbl =$("#tbl tr");
    var store = [];
    var sortElementIndex = parseFloat($.data(document.body, "sortElement"));

    for (var i = 0, len = $(tbl).length; i < len; i++)
    {
        var rowDom = $(tbl).eq(i);
        var rowData = $.trim($("td",$(rowDom)).eq(sortElementIndex).text());
          store.push([rowData, rowDom]);
    }
    store.sort(function (x, y)
    {
        if (x[0].toLowerCase() == y[0].toLowerCase()) return 0;
        if (x[0].toLowerCase() < y[0].toLowerCase()) return -1 * parseFloat($.data(document.body, "sortDir"));
        else return 1 * parseFloat($.data(document.body, "sortDir"));

    });
    for (var i = 0, len = store.length; i < len; i++)
    {
        $("#tbl").append(store[i][1]);
    }
    store = null;
 }
在加载新项目后,是否尝试调用您的排序表

$('#your-sortable').sortable('refresh');

在这里,一个jsfiddle将真的很有帮助=

Thaks获得响应!一般来说,让排序功能与表一起工作并没有问题。我的问题是能够根据滚动位置对动态加载额外数据的表进行排序。此功能也适用于现有数据和未来注入的数据…Hi@Royi。。。这看起来更像是一个通过按下按钮来调用的函数。还是我误解了?我正在寻找一种可以让我用鼠标上下拖动表格行,并在屏幕上动态查看排序情况的工具。谢谢你给了我一线希望我只是尝试实现它,但它根本没有改变行为。在我看来,在排序过程中调用刷新并不实际做任何事情。只要在其中得到一些代码,我就知道我能做些什么。目前的代码处理一些专有的东西,所以我不得不去掉一些东西-事实证明,我确实有我用来处理这些事情的原始概念验证代码。它的工作原理与我正在使用的屏幕非常相似,您肯定可以看到这个问题。在JSFIDLE中它看起来有点不稳定,但这里什么都没有。。。