簡體   English   中英

jQuery - 在可排序列表中操作被刪除的元素

[英]jQuery - manipulate dropped element in sortable list

我有一個可拖動列表(.field),您可以將項目拖放到可排序列表(.sortlist)中。 我是這樣做的,因為我不希望主列表(.field)以任何方式改變。 它工作正常,除了我無法弄清楚如何操作可排序列表中的刪除字段。

我可以通過在droppable()中的'drop:'函數中使用以下函數從可拖動區域到可放置區域執行此操作:

$(this).append('html code here to change content of dragged field');

但是這在sortable()中不起作用。 我的代碼看起來像這樣:

$(".sortlist").sortable({
  receive: function(event, ui) {
    var dropElemTxt = $(ui.item).text();
    var dropElemId = $(ui.item).attr('id');
    $(ui.item).replaceWith('<li class="box" id="'+dropElemId+'">Updated field! '+dropElemTxt+'</li>');
  }
});

$(ui.item).replaceWith更改正在拖動的主字段,因此這不起作用。 我嘗試了$(this).replaceWith,但更新了可排序區域(.sortlist)。

知道我需要什么代碼來引用被拖動的項目嗎?

非常感謝,阿里。

您可以在beforeStop事件中獲取拖動的項目:

beforeStop: function (event, ui) { draggedItem = ui.item;},
receive: function (event, ui) { /* use draggedItem here*/ }

使用beforeStop事件代替接收對我來說已經足夠了:

beforeStop: function(event, ui) { 
        var myClassItem = $('.myClass', ui.item);
        myClassItem.bind('click', function(){ /*my function*/ });
    }

我想我已經解決了。 有點hacky,但似乎工作!

我需要使用$('。sortlist li:last')來訪問被拖動的元素...

我遵循了你的想法,但是有一些錯誤使用這種方法(有時候使用droppable + sortable時,丟棄的元素就會消失)。 這對我來說很有用:

$(".draglist").draggable({
  start: function(e, ui) {
    draggedItem = ui.item;
  }
});

$(".sortlist").sortable({
  receive: function(event, ui) {
    //do something with the 'draggedItem' here...
    var droppedElemTxt = draggedItem.text();
    var droppedElemId = draggedItem.attr('id');
  }
  , start: function(e, ui) {
    draggedItem = ui.item;
  }
});

無法訪問被刪除的元素是JQuery ui sortables中的一個已知錯誤。 該票證包含一個允許您訪問已刪除元素的補丁,預計將在下一個主要版本中修復。

我想我實際上想出了一個更好的解決方案......到目前為止似乎工作...

我將一個droppable附加到一個sortable來聲明一個拖動項的全局變量。 有點像這樣:

$(".sortlist").droppable({
  drop: function(e, ui) {
    draggedItem = ui.draggable;
  }
}).sortable({
  receive: function(event, ui) {
    //do something with the 'draggedItem' here...
    var droppedElemTxt = draggedItem.text();
    var droppedElemId = draggedItem.attr('id');
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM