0

我有一个非常具体的问题,同时使用可排序和可拖动的 jQuery UI。我希望能够在新拖动元素的列表中获取索引/位置。如果我在列表内移动元素,我就能得到这个。

$("#draggable").draggable({
    cursor: "move",
    helper: "clone",
    connectToSortable: ".sortable"
});
$( ".sortable" ).sortable({
    items: 'li',
    stop: function(event, ui) {
        index = ui.item.index()+1;
        console.lo(index);
    },
    connectWith: ".sortableSub",
    appendTo: 'body',
}).disableSelection();

上面的代码可以正常工作,但是如果我对拖动的元素做同样的事情。

receive: function(event, ui) {
    console.log(ui.item.index());
},

使用 ui.item.index 只会返回 0,如果我在 stop: 而不是接收中执行相同操作:它会返回 -1,这与它被丢弃的位置无关。

4

3 回答 3

3

这是如何在可排序列表中获取 ADDED 项的索引的解决方案。

receive: function( event, ui ) {
  var newIndex = $(this).data("ui-sortable").currentItem.index()
}
于 2014-06-24T11:38:02.883 回答
1

尝试这个:

$("#draggable").draggable({
    cursor: "move",
    helper: "clone",
    connectToSortable: ".sortable"
});
$( ".sortable" ).sortable({
    items: 'li',
    stop: function(event, ui) {
        index = ui.item.index()+1;
        console.log(index);
    },
    connectWith: ".sortableSub",
    appendTo: 'body',
}).disableSelection();

$( "#draggable" ).on( "dragcreate", function( event, ui ) {

  console.log(ui.item.index());
});

或试试这个:

$("#draggable").draggable({
    cursor: "move",
    helper: "clone",
    connectToSortable: ".sortable",
    create: function( event, ui ) {
        var index = ui.item.index()+1;
         console.log(index);
    }
});
$( ".sortable" ).sortable({
    items: 'li',
    stop: function(event, ui) {
        index = ui.item.index()+1;
        console.log(index);
    },
    connectWith: ".sortableSub",
    appendTo: 'body',
}).disableSelection();
于 2013-08-07T08:21:17.787 回答
0

这是将项目拖入的解决方案ui.sortable

Receive函数上,**ui.item.sortable.model**用于获取被拖动的对象。

receive: function(event, ui) 
{
   console.log("Task No : " + ui.item.sortable.model.SID);
},

注意:我的对象有一个名为 SID 的属性。

于 2020-05-15T12:06:42.833 回答