首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery tableDnD绑定拖放到ajax返回的行

jQuery tableDnD绑定拖放到ajax返回的行
EN

Stack Overflow用户
提问于 2013-01-10 18:31:32
回答 2查看 942关注 0票数 0

我有一个表,在添加新记录之后替换所有行-所有操作都使用ajax调用,所以不需要重新加载。

一旦容器中的记录被替换,tableDnD似乎就不能再处理新记录了-我必须重新加载页面才能再次触发。

我试着用下面的方法使用livequery()插件,但它似乎不能解决这个问题(obj是tbody对象,它包含所有行):

代码语言:javascript
复制
sortRows : function(obj) {
    "use strict";
    obj.livequery(function() {
        $.each($(this), function() {
            var thisTbody = $(this);
            var thisUrl = thisTbody.attr('data-url');
            thisTbody.tableDnD({
                onDragClass: "trActive",
                onDrop: function(thisTable, thisRow) {
                    var thisArray = [];
                    var thisRows = thisTbody.find('tr');
                    $(thisRows).each(function() {
                        thisArray.push($(this).attr('id').split('-')[1]);
                    });
                    $(thisRows).promise().done(function() {
                        $.post(thisUrl, { items : thisArray }, 'json');
                    });
                }
            });
        });
    });
}
EN

回答 2

Stack Overflow用户

发布于 2013-01-10 18:44:57

Ok -找到问题所在。我将livequery应用于'tbody‘元素,它实际上不会改变--它的内容会改变,所以一旦我把调用对象改为'tbody’的'tr‘,现在一切都很好了。下面是我的代码现在的样子:

代码语言:javascript
复制
sortRows : function(obj) {
    "use strict";
    obj.find('tr').livequery(function() {
        var thisObj = $(this).parent('tbody');
        $.each(thisObj, function() {
            var thisTbody = $(this);
            var thisUrl = thisTbody.attr('data-url');           
            thisTbody.tableDnD({
                onDragClass: "trActive",
                onDrop: function() {
                    var thisArray = [];
                    var thisRows = thisTbody.find('tr');
                    $(thisRows).each(function() {
                        thisArray.push($(this).attr('id').split('-')[1]);
                    });
                    $(thisRows).promise().done(function() {
                        $.post(thisUrl, { items : thisArray }, 'json');
                    });
                }
            });
        });
    });
}
票数 0
EN

Stack Overflow用户

发布于 2016-07-01 02:32:52

您可以在每次添加新寄存器时更新您的表,如下所示:

代码语言:javascript
复制
$("#your_table_id").tableDnDUpdate();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14255783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档