jQuery UI拖放难题

伊娃·内布科

我试图做一个简单的难题。移动选定的div 1时,它必须交换放置它的div 2的位置,并且div 2必须替换div 1的位置。如果将蓝色放为红色,则可以看到此内容。如何对所有元素使用此规则?

我看到了很多可以解决此问题的插件-但不喜欢在我的项目中使用借来的代码,因此,如果有人提出建议或告诉我如何做,我将不胜感激。

http://jsfiddle.net/fresa150/6Ghr5/3/

<table>
<tr>
<td class="drop"><div class="red"></div></td>
<td class="drop"><div class="blue"></div></td>
<td class="drop"><div class="grey"></div></td>
<td class="drop"><div class="yellow"></div></td>
</tr>
</table> 

================================================== ====

.drop{
      border:1px solid black;
      width:5em;
      height:5em;
      padding: 1em;
    }
.red{
      border:1px solid black;
      width:5em;
      height:5em;
      background:red;
      color:white;
    }
.blue{
      border:1px solid black;
      width:5em;
      height:5em;
      background:blue;
      color:white;
    }
.grey{
      border:1px solid black;
      width:5em;
      height:5em;
      background:grey;
      color:white;
    }
.yellow{
      border:1px solid black;
      width:5em;
      height:5em;
      background:yellow;
      color:white;
    }

==================================================

    $('.red,.blue,.grey,.yellow').draggable({
            helper : 'original',
            opacity : 0.5,
            axis:'x'
    });
    var blueOffset = $('.blue').offset();
    var redOffset = $('.red').offset();

    $('.drop').droppable({    
        drop : function(event, ui) {
                    $('.red').offset(blueOffset);
                    $('.blue').offset(redOffset);
            }
    });
纳马什

您遇到的部分问题是,您在函数之外重新定义了blueOffset和redOffset变量,因此,每当触发.drop()时,您都在使用原始偏移量来确定div应该移动到的位置,这就是为什么这只能在第一次使用的原因。

你需要做的是确定,其中一些被动态每次删除一个元素时下降。我相信您最好还是使用Draggable的stop属性,而不是使用单独的droppable函数。这是一个小提琴,应该帮助您入门:http : //jsfiddle.net/2MYkV/

和我使用的代码:

        $('.drag').draggable({
            helper : 'original',
            opacity : 0.5,
            axis:'x',
            revert: true,
            stop: function(event) {
                    var dropelt = document.elementFromPoint(event.clientX, event.clientY);
                    var dropcell = dropelt.tagName == "td" ? $(dropelt) : $(dropelt).closest('td');
                    var dropdiv = dropcell.find('div');
                    var origcell = $(this).parent('td');
                    var origdiv = origcell.find('div');
                    origdiv.detach();
                    dropdiv.detach();


                    origcell.append(dropdiv);
                    dropcell.append(origdiv);
            }
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery UI拖放而不拖放

来自分类Dev

jQuery UI拖放-拖放功能

来自分类Dev

jQuery UI拖放-拖放功能

来自分类Dev

拖放jQuery UI

来自分类Dev

jQuery UI可拖放

来自分类Dev

JQuery UI拖放的奇怪行为

来自分类Dev

jQuery UI拖放元素跳转

来自分类Dev

在Jquery UI中拖放事件

来自分类Dev

jQuery UI拖放拖放可放置的“放置”事件

来自分类Dev

jQuery UI拖放时平滑过渡

来自分类Dev

jQuery UI可拖放,但不能排序

来自分类Dev

使用jQuery UI进行嵌套拖放

来自分类Dev

jQuery UI拖放对齐到中心

来自分类Dev

角度拖放(使用jQuery UI)-禁用交换

来自分类Dev

jQuery UI拖放时平滑过渡

来自分类Dev

jQuery ui拖放在鼠标位置

来自分类Dev

jquery-ui拖放多个div与排序

来自分类Dev

jQuery UI可拖放的可重复项

来自分类Dev

jQuery UI div在拖放时不可拖动

来自分类Dev

拖放JQuery UI后在列表中查找元素的索引

来自分类Dev

在jQuery-ui droppable中检测不可接受的拖放

来自分类Dev

敲除和JQuery UI拖放表单构建器

来自分类Dev

jQuery UI Droppable仅接受来自某些类的拖放

来自分类Dev

在2016年没有jQuery UI的JS表行拖放

来自分类Dev

如何使用jQuery UI在contenteditable div中拖放文本

来自分类Dev

jQuery UI拖放在移动设备上不起作用

来自分类Dev

在Surface Pro平板电脑上启用jQuery UI拖放

来自分类Dev

具有可排序UI的jQuery拖放不起作用

来自分类Dev

jQuery UI Droppable仅接受来自某些类的拖放