这是一个非常基本的示例,但应该适用于几种不同的情况。
我以jQuery UI Draggable + Sortable 为例,除了.sortable() 小部件之外,我还将.droppable() 小部件绑定到<ul id="sortable"> 元素。
即使不是可放置小部件的drop 事件中最聪明的方法,我也会检查变量的值以识别移动元素的来源。 (它是来自可排序列表还是来自我的一个可拖动对象?)
如果它确实来自其中一个可拖动对象,我会将它的 HTML 更改为我想要的。否则它保持不变(因为你只是重新排列可排序的顺序)
HTML
<ul>
<li id="draggable" class="ui-state-highlight">Drag me down</li>
</ul>
<br />
<br />
<br />
<ul id="sortable">
<li class="ui-state-default">Item 1</li>
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
<li class="ui-state-default">Item 4</li>
<li class="ui-state-default">Item 5</li>
</ul>
JS
$(function () {
var origin = 'sortable';
$("#sortable").droppable({
drop: function (event, ui) {
if (origin === 'draggable') {
ui.draggable.html('<span>Look at this new fancy HTML!</span>');
console.log(ui.draggable);
origin = 'sortable';
}
}
}).sortable({
revert: true
});
$("#draggable").draggable({
connectToSortable: "#sortable",
helper: "clone",
revert: "invalid",
start: function () {
origin = 'draggable';
}
});
});
jsfiddle for demonstration
一个很无聊的例子,因为新的 HTML 是静态的。但是,假设您为每个可拖动对象都有一个自定义帮助程序,这应该成为您的新 HTML。
因此,您例如已将一些 HTML 片段存储在一个数组中,并选择适合索引的匹配条目或其他任何内容。
这看起来像这样:
var helpersArr = ['<input type="text" />', '<input type="file" />', '<input type="submit" value="Save" />'];
var helper;
//draggable
helper: function () {
helper = helpersArr[$(this).index()];
return helper;
}
//dropppable drop function
ui.draggable.html(helper);
很确定您也可以通过避免使用辅助变量并改用ui.helper 来获得相同的结果,但我不知道如何获取它的 HTML 部分。
如果这不起作用,请告诉我。总之,我认为您可以使用我的示例作为不同目标的起点,以更改被删除元素的 HTML。