Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery拖放正在复制div_Jquery_Html_Jquery Ui_Web Applications_Jquery Ui Draggable - Fatal编程技术网

jQuery拖放正在复制div

jQuery拖放正在复制div,jquery,html,jquery-ui,web-applications,jquery-ui-draggable,Jquery,Html,Jquery Ui,Web Applications,Jquery Ui Draggable,好的,所以我从另一个问题中抓取了这个代码片段,我一辈子都记不清是哪一个,否则我会试图重新提出这个问题。这就是我努力实现的目标: 我有各种各样的div,希望我能够拖动它们并让它们交换位置,所以如果我抓住红方块并进入蓝方块,它们将交换位置(捕捉到它们的位置)。我现在只是想让真正基本的代码正常工作,一旦我做到了,我将在交换样式表以更改内容和外观时实现不同的样式表 当前代码的问题是,当我拖放它时,它将回落到其原始位置,并在其他div之后创建一个重复的div。希望这有意义,以下是jquery: $(doc

好的,所以我从另一个问题中抓取了这个代码片段,我一辈子都记不清是哪一个,否则我会试图重新提出这个问题。这就是我努力实现的目标:

我有各种各样的div,希望我能够拖动它们并让它们交换位置,所以如果我抓住红方块并进入蓝方块,它们将交换位置(捕捉到它们的位置)。我现在只是想让真正基本的代码正常工作,一旦我做到了,我将在交换样式表以更改内容和外观时实现不同的样式表

当前代码的问题是,当我拖放它时,它将回落到其原始位置,并在其他div之后创建一个重复的div。希望这有意义,以下是jquery:

$(document).ready(function () {
    src = null;
    options = {
        revert:true,
        /*axis: 'x',*/
        opacity: 0.8,
        start: function() {
            src = $(this).parent();
        }
    }

    $(".item").draggable(options);
    $(".container").droppable({
        drop: function(event, ui) {
            src.append(
                $('.item', this).remove().clone()
                    .removeClass().addClass("item")
                    .css({"left": '', "opacity": '',"top":''})
                    .draggable(options)
                );

            $(this).append(
                ui.draggable.remove().clone()
                    .removeClass().addClass("item")
                    .css({"left": '', "opacity": '',"top":''})
                    .draggable(options)
                );
        }
    });

});

return this.pushStack( stack );
标记如下所示:

<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>


样式在这里应该很重要,但如果是这样的话,我只是将它们设置为100x100px,一个红色,一个蓝色,一个绿色。

这里有一个解决这个问题的方法,不使用交换插件,只使用jQuery UI。 小提琴:

jQuery用户界面:

$(".item").on("mouseup", function(){
   $(this).css("top", "").css("left", "");
});

$(".item").draggable().droppable({
    drop: function( event, ui ) {
        draged = ui.draggable.css("top", "initial").css("left", "initial");
        dropped = $(this);
        var elems = draged.parent().children();
        if( elems.index(draged) > elems.index(dropped) ) {
            temp = draged;
            draged = dropped;
            dropped = temp;
        }
        var nElem = draged.next();
        dropped.after(draged);
        nElem.before(dropped);
    }
});

这将完成拖放对象的交换。

为什么不使用插件呢?哦,我喜欢这个例子。仍然无法在我的网站上运行,但我相信我的问题是将脚本放错了位置。我第一次做MVC3应用程序,所以我对布局有点粗略。我将纠正这个问题,并在今晚试一试。非常好,非常干净的解决方案。我不记得这是为了什么项目了,但JSFIDLE看起来像是我的目标