如何将可拖动元素放入特定位置

时间:2017-04-28 01:42:37

标签: javascript html5 css3 jquery-ui-draggable

我正在尝试将我的JQuery UIdraggable容器移动到div(id =" frame")但是它在网页中的任何位置拖动。那么如何将我的可拖动容器移动到特定的div(id =" frame")。所以请给我一个方法来解决这个问题。我正在尝试制作我自己的自定义产品设计器插件,这是我的第一个功能。这是我的代码:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Dragg</title>
  <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css"/>

  <style>
  #draggable { 
    overflow:hidden;
    width:  100px;
    height: 100px;
    padding: 0.5em;
    background-color: transparent;
  }
  #frame {
   overflow:hidden;
    width:  350px;
    height: 500px;
    padding: 0.5em;
    border : 1px solid black; 
  }
  </style>
</head>
<body>
      <input type = "file" id="inputFileToLoadOuter">
    <input type = "button" onclick = "loadImageFileAsURL(1)" value = "LoadOuterImage">

<input type = "file" id="inputFileToLoadInner">
<input type = "button" onclick = "loadImageFileAsURL(2)" value = "LoadInnerImage">

<div id="frame">
  <img src="" id="OuterImg" style="width: 100% ; height:100%" />
</div>

<div id="draggable">
  <img src="" id="InnerImg" style="width: 100% ; height:100%" />
</div>

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<script>
  $( function() {
    $( "#draggable" ).resizable().draggable();
  } );

  function loadImageFileAsURL(pos)
  {
      if(pos == 1){
        var filesSelected = document.getElementById("inputFileToLoadOuter").files;
      }else{
        var filesSelected = document.getElementById("inputFileToLoadInner").files;
      }
      if (filesSelected.length > 0)
      {
          var fileToLoad = filesSelected[0];

          if (fileToLoad.type.match("image.*"))
          {
              var fileReader = new FileReader();
              fileReader.onload = function(fileLoadedEvent) 
              {
                  if(pos == 1){
                    var imageLoaded = document.getElementById("OuterImg");  
                  }else{
                    var imageLoaded = document.getElementById("InnerImg");
                  }
                  imageLoaded.src = fileLoadedEvent.target.result;
              };
              fileReader.readAsDataURL(fileToLoad);
          }
      }
  }
  </script>
</body>
</html>

plunker:https://plnkr.co/OubL3Uw0G7gi4d01yx0V

2 个答案:

答案 0 :(得分:1)

将#draggable对象修改为此

$("#draggable").resizable().draggable({
    revert: "invalid",
});

并添加此项以使您#frame droppable

$('#frame').droppable({
    accept: '#draggable',
})

阅读关于此的jqueryui文档,您可以用此实现更多功能。见https://jqueryui.com/droppable/#photo-manager

答案 1 :(得分:0)

您需要使用可接受的dropable。喜欢这个

$('#frame').droppable({
    accept: '#draggable',
})

它会解决你的问题:)

了解更多知识 JQuery UI