jQuery UI可排序和可拖动。获取拖动元素的索引

时间:2013-08-07 08:04:15

标签: jquery jquery-ui jquery-ui-sortable jquery-ui-draggable

我有一个非常具体的问题,使用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中执行相同的操作:而不是receive:它返回-1,而不管它被丢弃的位置。

3 个答案:

答案 0 :(得分:3)

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

receive: function( event, ui ) {
  var newIndex = $(this).data("ui-sortable").currentItem.index()
}

答案 1 :(得分: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();

答案 2 :(得分:0)

这是在ui.sortable中拖动项目的解决方案。

Receive功能上,使用**ui.item.sortable.model**获取被拖动的对象。

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

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