提问人:Cudos 提问时间:5/15/2009 最后编辑:bluishCudos 更新时间:9/21/2016 访问量:98966
当我制作一个可拖动的克隆并将其放入可拖放中时,我无法再次拖动它
When I make a draggable clone and drop it in a droppable I cannot drag it again
问:
当我制作一个可拖动的克隆并将其放入可拖放中时,我无法再次拖动它。我该怎么做?其次,我只能弄清楚如何将克隆添加到可丢弃的中。但随后它会捕捉到任何现有元素之后的左上角,而不是放置位置。.append
$(document).ready(function() {
$("#container").droppable({
drop: function(event, ui) {
$(this).append($(ui.draggable).clone());
}
});
$(".product").draggable({
helper: 'clone'
});
});
</script>
<div id="container">
</div>
<div id="products">
<img id="productid_1" src="images/pic1.jpg" class="product" alt="" title="" />
<img id="productid_2" src="images/pic2.jpg" class="product" alt="" title="" />
<img id="productid_3" src="images/pic3.jpg" class="product" alt="" title="" />
</div>
答:
53赞
Cudos
5/15/2009
#1
一种方法是:
$(document).ready(function() {
$("#container").droppable({
accept: '.product',
drop: function(event, ui) {
$(this).append($("ui.draggable").clone());
$("#container .product").addClass("item");
$(".item").removeClass("ui-draggable product");
$(".item").draggable({
containment: 'parent',
grid: [150,150]
});
}
});
$(".product").draggable({
helper: 'clone'
});
});
但我不确定它是否是漂亮和干净的编码。
评论
3赞
Barry Chapman
3/17/2019
聚会来得有点晚,但是,那应该吗?(不带引号)因为您是从回调参数加载对象?$(this).append($("ui.draggable").clone());
$(this).append($(ui.draggable).clone());
26赞
Bob Nadler
8/31/2009
#2
我通过谷歌找到了这个问题。我也无法阻止位置捕捉到容器,直到我在附加时将“ui.draggable”更改为“ui.helper”:
$(this).append($(ui.helper).clone());
5赞
rado
3/2/2010
#3
对于那些试图重新定位掉落物品的人。请看这里。
实际上,我不得不使用看起来像
$(item).css('position', 'absolute');
$(item).css('top', ui.position.top - $(this).position().top);
$(item).css('left', ui.position.left - $(this).position().left);
去做。
0赞
Damon Hogan
1/29/2016
#4
这是我的解决方案,它允许拖放克隆,然后根据需要通过另一个拖放替换它。它还有一个回调函数参数,该参数传回已删除的 div 对象,以便您可以在删除后对所选的 jquery div 执行某些操作。
refreshDragDrop = function(dragClassName,dropDivId, callback) {
$( "." + dragClassName ).draggable({
connectToSortable: "#" + dropDivId,
helper: "clone",
revert: "invalid"
});
$("#" + dropDivId).droppable({
accept: '.' + dragClassName,
drop: function (event, ui) {
var $this = $(this),
maxItemsCount = 1;
if ($this.children('div').length == maxItemsCount ){
//too many item,just replace
$(this).html($(ui.draggable).clone());
//ui.sender.draggable('cancel');
} else {
$(this).append($(ui.draggable).clone());
}
if (typeof callback == "function") callback($this.children('div'));
}
});
}
评论