Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
Javascript 剑道列表框:按顺序返回丢弃的项目_Javascript_Jquery_Kendo Ui - Fatal编程技术网

Javascript 剑道列表框:按顺序返回丢弃的项目

Javascript 剑道列表框:按顺序返回丢弃的项目,javascript,jquery,kendo-ui,Javascript,Jquery,Kendo Ui,我使用两个相互连接的列表框,允许在两者之间进行拖放。使用在另一个线程中找到的重新排序代码修复了同一列表中项目的重新排序问题,但在将项目从一个列表框拖放到另一个列表框时,它不会解决该问题。我理解这是因为这不是“重新排序”操作,而是“删除”操作。我尝试了许多不同的角度,比如使用“添加”事件,但是(e)对象中没有“偏移”属性 我怎样才能完成同样的事情,也就是说,保持被丢弃的项目在视觉上被丢弃的顺序 下面是我的小部件函数,它带有重新排序事件,可以在列表框中显示项目时对项目进行正确排序(我无法理解为什么不

我使用两个相互连接的列表框,允许在两者之间进行拖放。使用在另一个线程中找到的重新排序代码修复了同一列表中项目的重新排序问题,但在将项目从一个列表框拖放到另一个列表框时,它不会解决该问题。我理解这是因为这不是“重新排序”操作,而是“删除”操作。我尝试了许多不同的角度,比如使用“添加”事件,但是(e)对象中没有“偏移”属性

我怎样才能完成同样的事情,也就是说,保持被丢弃的项目在视觉上被丢弃的顺序

下面是我的小部件函数,它带有重新排序事件,可以在列表框中显示项目时对项目进行正确排序(我无法理解为什么不会自动发生这种情况!)。请记住,只有在同一列表框内移动项目时,才会发生重新排序事件,而不是将项目从一个列表框拖动到另一个列表框时

$("#myMenus").kendoListBox({
    draggable: true,
    connectWith: "baseMenus",
    dropSources: ["baseMenus"],
    add: function(e) {
        console.log('ADD');
        console.log(e);
    },
    reorder: function(e) {
        e.preventDefault();
        var dataSource = e.sender.dataSource;
        var dataItem = e.dataItems[0];
        var index = dataSource.indexOf(dataItem) + e.offset;
        dataSource.remove(dataItem);
        dataSource.insert(index, dataItem);
    },
});

根据在第二个列表框中删除项目时出现的html提示,我已成功完成了相同的任务。我已经用这个解决方案修改了你的代码

$("#myMenus").kendoListBox({
    draggable: true,
    connectWith: "baseMenus",
    dropSources: ["baseMenus"],
    add: function(e) {
        e.preventDefault();
        var dataSource = e.sender.dataSource;
        var dataItem = e.dataItems[0];
        var index = $('li.k-drop-hint').index();
        dataSource.insert(index, dataItem);
    },
    reorder: function(e) {
        e.preventDefault();
        var dataSource = e.sender.dataSource;
        var dataItem = e.dataItems[0];
        var index = dataSource.indexOf(dataItem) + e.offset;
        dataSource.remove(dataItem);
        dataSource.insert(index, dataItem);
    },
});
我会研究一下,看看和你有什么不同。你想要的行为在他们的演示中起作用。