【发布时间】:2020-03-28 18:22:51
【问题描述】:
我正在尝试创建一个简单的可排序和可拖动列表,其中包含:
- 可拖动项目列表(链接到下面的可排序项)
- 可排序的项目列表
- 其中一些项目内部会有一个可放置的 div
到目前为止,我设法做到了:JSFiddle
HTML 代码:
<h3>DRAGGABLE</h3>
<ul id="draggables">
<li class="draggable">Item 1</li>
<li class="draggable">Item 2</li>
<li class="draggable">Item 3</li>
<li class="draggable">Item 4</li>
<li class="draggable">Item 5</li>
</ul>
<h3>SORTABLE</h3>
<ul id="itemsContainer">
<li class="item">Item 1</li>
<li class="item">
<p>Item with drop zone</p>
<div class="droppable">DROP HERE</div>
</li>
<li class="item">Item 3</li>
<li class="item">Item 4</li>
<li class="item">Item 5</li>
</ul>
JS代码在这里:
$(".draggable").draggable({
connectToSortable: '#itemsContainer',
helper: 'clone',
revert: 'invalid'
});
$("#itemsContainer").sortable({
revert: true
});
$(".droppable").droppable({
drop: function(event, ui) {
$(this).html("Dropped!");
$(this).css("background-color", "red");
$(ui.helper[0]).css("background-color", "green");
}
});
问题是,当一个项目被放置在可放置 div 中时,它会正确检测到正在发生放置,但该项目仍会添加到可排序列表中。我认为“贪婪”选项会阻止这种情况发生。有什么想法吗?
编辑:如果我对 ui.helper[0] 对象(也就是克隆的可拖动对象)应用样式,它会一直保持,直到项目在可排序列表中实际排序。
【问题讨论】:
-
删除 line helper:'clone' 时,该项目从列表中删除。我在你的小提琴中编辑了这个:jsfiddle.net/d4fa9bcg
-
这不是我要找的。将项目放在可放置区域上时,我只是不希望将此项目添加到列表中,仅在可放置 div 内。
标签: javascript jquery jquery-ui-sortable jquery-ui-draggable jquery-ui-droppable