首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery UI交换项目时防止克隆返回

问使用jQuery UI交换项目时防止克隆返回
EN

Stack Overflow用户
提问于 2011-12-17 13:58:04
回答 1查看 504关注 0票数 0

我正在使用jQuery可拖/可下垂来使网格中的元素被交换。例如,当元素1被放到元素2中时,它们会改变位置。

有两个问题:

  1. 在成功的拖放后,克隆仍然浮回原来的位置。我怎么才能阻止这一切?我只希望它在没有掉到有效目标的情况下才能浮回来。
  2. 理想情况下,我也希望设置helper: original,但当我尝试设置它时,我无法计算出如何正确计算drop函数中的交换位置。

我已经将代码放在jsFiddle上,下面是供参考的代码:

代码语言:javascript
复制
<div id="room"></div>

<script>
$(function() {
//Set up seats - four rows of eight
for (var row = 0; row < 4; row++) {
    for (var col = 0; col < 8; col++) {
        $('#room').append('<div class="seat" style="top: ' + (row * 45 + 15) + 'px; left: ' + (col * 117 + 18) + 'px;">' + (row * 4 + col + 1) + '</div>');
    }
}

//Swap function from http://blog.pengoworks.com/index.cfm/2008/9/24/A-quick-and-dirty-swap-method-for-jQuery
jQuery.fn.swap = function(b) {
    b = jQuery(b)[0];
    var a = this[0];
    var t = a.parentNode.insertBefore(document.createTextNode(''), a);
    b.parentNode.insertBefore(a, b);
    t.parentNode.insertBefore(b, t);
    t.parentNode.removeChild(t);
    return this;
};

$(".seat").draggable({
    revert: true,
    helper: "clone"
});

$(".seat").droppable({
    accept: ".seat",
    hoverClass: "ui-state-hover",
    drop: function(event, ui) {

        var draggable = ui.draggable,
            droppable = $(this),
            dragPos = draggable.position(),
            dropPos = droppable.position();

        draggable.css({
            left: dropPos.left + 'px',
            top: dropPos.top + 'px'
        });

        droppable.css({
            left: dragPos.left + 'px',
            top: dragPos.top + 'px'
        });
        draggable.swap(droppable);
    }
});

});
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-18 10:53:58

我用$(ui.helper).hide();在drop函数中解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8545230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档