【发布时间】:2019-10-11 03:30:49
【问题描述】:
我有一个实现 jQuery 可拖动、可放置和可排序的页面。它包含 div 行、一个“添加行”按钮和一个图像图标,该图标可以拖动到任何 div 行上,从而显示一个模式窗口,允许将图像放置到该行上。一切都很好......除了:
我使用 jQuery sortable 来重新排列行。当拖动发生时(约束到 y 轴),被拖动的 div 被拖动并放置在它之后的 div 是灰色的。这很好用,除非 DIV 中有图像,导致拖动的 DIV 的高度比空 div 高得多。它似乎没有正确跟踪,正如行如何变成灰色和从灰色显示的那样。
这里是一些 JQuery 代码:
$(".dropzone").droppable({
over: function(event,ui)
{
var ElementOver = $(event.target);
var DraggedElement = $(ui.draggable);
var IDofDraggedElement = DraggedElement.attr("id");
ElementOver.css("background-color","lightgray");
},
out: function(event,ui)
{
var ElementOver = $(event.target);
ElementOver.css("background-color","");
},
drop: function(event,ui)
{
DropObject(event,ui); //This handles Ajax activity
var ElementOver = $(event.target);
ElementOver.css("background-color","");
}
});
$("#lines").sortable({
handle: '.iconmove',
axis: 'y',
tolerance: 'pointer',
helper: 'clone'
});
这是我的 HTML 示例:
<div id="linecontainer" class="w3-card-4 w3-padding">
<div id="lines">
<cfoutput query="qFormLines" group="formlineid">
<div class="w3-row w3-padding" style="width:80%" id="line#formlineid#">
<div class="w3-col w3-center l1 m1 s1">
<img id="moveicon#formlineid#" class="iconmove" src="_images/updown24.png" title="Move Line" >
</div>
<div class="dropzone w3-padding w3-col w3-border l11 m11 s11" id="zone#formlineid#" >
<cfoutput>
<cfif imagefile NEQ "">
<img id="formitem#formitemid#" class="w3-border" src="_images/#imagefile#" >
</cfif>
</cfoutput>
</div>
</div>
</cfoutput>
</div>
</div>
这是我创建的一个小提琴,虽然它与我的本地源代码不太一样:
【问题讨论】:
-
您好,不清楚您的问题到底是什么,您想要什么解决方案?如果您可以将其分开说明问题和预期输出,那就太好了!
-
是否希望所有 div 在拖动时保持相同的高度,无论它们是否有图像?
-
试试我的旧示例jsfiddle.net/BerkerYuceer/KZeBq 有一个 connectToSortable 东西.. 由元素的 id 提供。
-
Berker - 没有什么帮助,因为我无法拖动/排序现有的 div。
标签: jquery-ui jquery-ui-sortable