使用JQuery将元素放置在精确位置
我制作了一个UI,在其中我创建了一个div,其中包含多个div或slot(比如)。这些slot是使用Knockout.js生成的,我的意思是,这些插槽绑定在滑块值上。根据滑块的值,它会动态生成插槽。我关心的是,我想在这些div上删除其他外部元素,但当我这样做时,它会在最后一个div上删除,如果我再次删除它,它会添加到插槽的上一个div。bt我希望必须删除它我把它放在同一个位置。它也可以在两个分区的中间。请建议我。我的代码如下:使用JQuery将元素放置在精确位置,jquery,jquery-ui,knockout.js,Jquery,Jquery Ui,Knockout.js,我制作了一个UI,在其中我创建了一个div,其中包含多个div或slot(比如)。这些slot是使用Knockout.js生成的,我的意思是,这些插槽绑定在滑块值上。根据滑块的值,它会动态生成插槽。我关心的是,我想在这些div上删除其他外部元素,但当我这样做时,它会在最后一个div上删除,如果我再次删除它,它会添加到插槽的上一个div。bt我希望必须删除它我把它放在同一个位置。它也可以在两个分区的中间。请建议我。我的代码如下: <div class="slotSystem">
<div class="slotSystem">
<div class="slotMachine" data-bind="foreach:slots,style:{height:height()+'px'}">
<div class="slot">
<div class="slot-info drop" data-bind="text:formatedTime,style:{height:height()+'px'}"></div>
</div>
</div>
</div>
$(".drop").droppable({
accept: ".draggable",
tolerance:"pointer",
drop: function (event, ui) {
console.log("drop");
var dropped = ui.draggable;
var droppedOn = $(this);
$(dropped).detach().css({ top: 0, left: 0 }).appendTo(droppedOn);
$('#clear-organizer').show();
$('#saveplaylist').show();
$(dropped).height(10);
var closebtn = ui.draggable.find(' .close');
$(closebtn).addClass('close-organizer');
}
});
$(“.drop”).dropable({
接受:“.draggable”,
公差:“指针”,
drop:函数(事件、用户界面){
控制台日志(“下降”);
var DROPED=ui.draggable;
var droppedOn=$(本);
$(已删除).detach().css({top:0,left:0}).appendTo(droppedOn);
$(“#清除组织者”).show();
$(“#保存播放列表”).show();
高度(10);
var closebtn=ui.draggable.find('.close');
$(closebtn).addClass('close-organizer');
}
});
它完全按照您在代码中告诉它的方式执行。要使其符合您在问题中编写的内容,您只需将.slotMachine
DIV设置为可拖放的,而不是.slot info
(甚至是.slot
)
编辑:如果您想找出您放在哪个DIV上并将拖动的DIV放在它旁边,请将
.slot
s droppable保留在您的DropHandler中,并使用or(它将您的元素插入droppedOn
目标的外部),而不是您现在使用的.appendTo()
(这将在droppedOn
目标中插入您的元素。我也经历了这一点。但正如您在回答中所说的,它不会用classname=“slot”将删除的DIV附加到两个不同的DIV之间。啊,好的,然后使slot可删除,而不是。appendTo(droppedOn)
使用.insertBefore(droppedOn)
或.insertAfter(droppedOn)
。不起作用。我需要这个可删除元素必须位于两个分区之间,这两个分区之间使用1px的边框相互连接,这意味着它必须在指定的两个分区之间共享。当然它是有效的。请参阅您需要在droppedOn
的父分区之前插入。您应该将您的帖子作为一个明确的问题来制定,以最大限度地提高您的c我的朋友,我很难得到答案。