Javascript 如何将可排序div拖到外部元素上

Javascript 如何将可排序div拖到外部元素上,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,我想将可排序容器的div拖到一个可拖放的div(不可排序)上。我尝试过使用html5拖放事件,但没有一个被解雇。 最重要的是,不会触发可排序容器上的dragstart事件。 谁能给我一个解决办法吗。我只想启动dragstart事件。这是我的完整代码: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQue

我想将可排序容器的div拖到一个可拖放的div(不可排序)上。我尝试过使用html5拖放事件,但没有一个被解雇。 最重要的是,不会触发可排序容器上的dragstart事件。 谁能给我一个解决办法吗。我只想启动dragstart事件。这是我的完整代码:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>jQuery UI Sortable - Handle empty divsts</title>
        <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
        <style>
            .draggableDivs{
                background-color: orange;
                border: solid black;    
            }
        </style>
    </head>
    <body>
        <div id="sortable" style="float: left;">
            <div class="draggableDivs" draggable="true">Can be dropped !!..</div>
            <div class="draggableDivs" draggable="true">..on an empty list</div>
            <div class="draggableDivs" draggable="true">Item 3</div>
            <div class="draggableDivs" draggable="true">Item 4</div>
            <div class="draggableDivs" draggable="true">Item 5</div>
        </div>
        <div id="dropTarget" style="width: 500px; height: 500px; background-color: skyblue; float: left; text-align: center">
            <h4>Drop Here</h4>
        </div> 
        <script>

            $("#sortable").sortable();

            document.getElementById('sortable').addEventListener('dragstart', function(evt) {
                console.log("The 'dragstart' event fired.");
                evt.dataTransfer.setData('text', evt.target.textContent);
            }, false);

        </script>
    </body>
</html>

jQuery UI可排序-处理空divst
.Dragabledivs{
背景颜色:橙色;
边框:纯黑;
}
可以放弃!!。。
…在一张空名单上
项目3
项目4
项目5
到这里来
$(“#可排序”).sortable();
document.getElementById('sortable').addEventListener('dragstart',函数(evt){
log(“触发了“dragstart”事件”);
setData('text',evt.target.textContent);
},假);

使用jquery ui可以实现如下功能:

基本上,我们克隆被拖动的元素并将其附加到droppable on,因为如果删除被拖动的元素,jQuery ui会向我们抛出错误

然后我们移除回调中的实际元素

$(“#可排序”).sortable();
$(“#dropTarget”)。可拖放({
接受:“div”,
drop:函数(事件、用户界面){
ui.draggable.clone().appendTo(this);
ui.draggable.remove();
}
})
#可排序{
浮动:左;
}
.Dragabledivs{
背景颜色:橙色;
边框:纯黑;
}
#投靶{
宽度:500px;
高度:500px;
浮动:左;
文本对齐:居中;
背景色:天蓝色;
}

可以放弃!!。。
…在一张空名单上
项目3
项目4
项目5
到这里来

您在哪里设置div可拖动
draggable=“true”
您需要为div#droppable$(“#droppable”).droppable({accept:“div”})添加jQuery代码@Darren,我认为可排序元素在默认情况下是可拖动的。如果我正在工作,请纠正我。@WisdmLabs:trued$(“#droppable”).droppable({accept:“div”});没有运气。也请参考这篇文章。非常感谢您提供的详细解决方案和建议。但当我使用jquerydroppable时,被删除的元素不会在内部定位为w.r.t drop目标。也就是说,放置的元素相对于屏幕进行定位。请让我知道如何将它们定位为投放目标的内部元素?我的意思是,被删除的元素应该一个接一个地放置,而不是将它们放置在屏幕上的任何地方。@Quick\u Silver为此,您只需从克隆的元素中删除jquery ui注入的样式即可。。。看这个。您可以根据需要使用cssThank设置放置区域内项目的外观样式。您的解决方案非常清晰简单。我接受你的回答。