我不熟悉jQuery的动画,但我发现一些事情来解决交换问题。
当你拖动占位符(“与拖动类div标签”)的加入SYLE性能style="position: relative; z-index: auto; left: 151px; top: 22px;"
与left: 151px; top: 22px
,这意味着多远预留位置从左边和顶部属性的当前位置移动。
在当前的代码你是swapping .draggable placeholders
,这就是为什么你看到的是不寻常的行为
而是换.draggable
<div class="pinChildContainer droppable">
<div class="pins draggable">
<img class="pinImage" src="img/paymentServices.jpg" alt="Payment Services" width="188" height="185" />
<p class="pinTitle">Payment Services</p>
</div>
</div>
变更的内容(现掉换.pins)
<div class="pinChildContainer droppable">
<div class="draggable">
<div class="pins">
<img class="pinImage" src="img/paymentServices.jpg" alt="Payment Services" width="188" height="185" />
<p class="pinTitle">Payment Services</p>
</div>
</div>
</div>
这是交换.pins的代码
var dragged = $(ui.draggable);
var fromContainer = dragged.parent();
var toContainer = $(this);
var displaced = $(this).find('.pins');
// added class .from and .to classes to identify the placeholders
var fromPinContainer = dragged.find('.pins').removeClass('from to');
fromPinContainer.addClass("from");
displaced.removeClass('from to');
displaced.addClass("to");
if (fromContainer.is(toContainer)) {
dragged.animate({ left: 0, top: 0 });
}
dragged.animate({ top: 0, left: 0 });
displaced.animate({ bottom: 0, left: 0 }, finalize);
function finalize() {
fromContainer.find('.draggable').append(toContainer.find('.to'));
toContainer.find('.draggable').append(dragged.find('.from'));
}
finalize();
JSFiddle
我想这不是打磨的代码,但它给你在找什么效果。
我更新了我的jQuery以及jsfiddle链接,但我仍遇到同样的问题。 – Tyharo
您可否详细说明_“交换过程中的视觉问题” - 确切地说交换引发了什么样的视觉问题? –
当交换元素的位置时,拖动的引脚将从不正确的方向进行动画处理,以在交换过程中占据位置。如果您查看jsfiddle并尝试将某个引脚拖动到另一个引脚上,则可以在交换过程中看到问题。 – Tyharo