【发布时间】:2016-11-27 17:42:39
【问题描述】:
我正在实施sortable plugin of jQuery UI。 有两列,我们可以将元素从一列拖放到另一列。 我有以下 javascript 代码:
$(function () {
$("#sortable1, #sortable2").sortable({
connectWith: ".connectedSortable",
update: function () {
var order1 = $('#sortable1').sortable('toArray').toString();
var order2 = $('#sortable2').sortable('toArray').toString();
alert("Order 1:" + order1 + "\n Order 2:" + order2);
$.ajax({
type: "POST",
url: "/echo/json/",
data: "order1=" + order1 + "&order2=" + order2,
dataType: "json",
success: function (data) {
}
});
}
}).disableSelection();
});
还有 HTML:
<ul id="sortable1" class="connectedSortable">
<li class="ui-state-default" id='item1'>Item 1</li>
<li class="ui-state-default" id='item2'>Item 2</li>
<li class="ui-state-default" id='item3'>Item 3</li>
<li class="ui-state-default" id='item4'>Item 4</li>
<li class="ui-state-default" id='item5'>Item 5</li>
</ul>
<ul id="sortable2" class="connectedSortable">
<li class="ui-state-highlight" id='item6'>Item 6</li>
<li class="ui-state-highlight" id='item7'>Item 7</li>
<li class="ui-state-highlight" id='item8'>Item 8</li>
<li class="ui-state-highlight" id='item9'>Item 9</li>
<li class="ui-state-highlight" id='item10'>Item 10</li>
</ul>
从上面的 javascript 中,我可以得到整体更改后的第 1 列和第 2 列的顺序。但是,我想知道已更改的单个项目。
就像,在下图中,我将 Item3 从第 1 列拖到第 2 列。我想得到类似的输出 - Item3_before=Column1,Item3_after=Column2.
在上面的javascript代码中,通过像update事件一样使用start事件,我们可以获得元素的Before状态,而不是单个元素;它给出了所有元素的状态。
【问题讨论】:
-
您想知道列表何时收到新项目?或者您想知道排序前后的顺序或每个列表以进行比较?
-
我想知道物品前后的状态。就像上面的例子一样,第 3 项已从第 1 列更改为第 2 列。所以,我想知道第 3 项的前状态为第 1 列,后状态为第 2 列。
-
我会在
start中捕获数组,然后在update中再次捕获。然后比较 2 并确定移动的项目。
标签: javascript jquery jquery-ui drag-and-drop