【问题标题】:Jquery drag and drop based on data-id基于data-id的jquery拖拽
【发布时间】:2017-08-28 08:38:15
【问题描述】:

我是拖放功能的新手。

查询:

function allowDrop(ev) {
    ev.preventDefault();
}

function drag(ev) {
    var DataId = ev.target.parentNode.getAttribute('data-id');
    alert("Data Id : "+DataId);
    var selected_table =$("#rows .sim-row[data-id='"+DataId+"']");
    //var main_table = selected_table.parentNode;
    alert("Data Id : "+selected_table.html());
    ev.dataTransfer.setData("text",selected_table);
}

function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    alert("Data Id : "+data.html());
    ev.target.appendChild(data.clone());
}

HTML 代码:

<div id="content" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>

<div id="rows">
    <table class="sim-row" data-id="1001" id="1001">
        <tr>
            <td class="sim-row-header1 sim-row-edit width100" data-type="title">Main Title</td>                         
        </tr>
     </table>
</div>  

<div class="buttons"  data-id="1001" id="1001" draggable="true" ondragstart="drag(event)" ondrop="drop(event)">
            <img id="image"src="<?php echo base_url()?>assets/invoice/preview/1001.png" alt="title">Title
        </div>

每当我拖放图像时,我都想实现这样的效果,因此必须将完整的表格添加到下面的 div 中

我有多个表格,它们的工作方式就像整个表格都可以拖动到 div 中。但是图像不能从位置移除。只有它的内容需要克隆或类似内容。

现在我遇到了错误。但不知道为什么它会显示这个错误。

TypeError: data.html is not a function

我怎样才能做到这一点? 有任何想法吗 ?有什么建议吗?

【问题讨论】:

  • 这里我想实现像img会被拖入内容div但img标签一定不需要删除

标签: javascript jquery html drag-and-drop


【解决方案1】:

这里有一个解决方案https://jsfiddle.net/ed5bmth2/1/

allowDrop = function(ev) {
  ev.preventDefault();
}

drag = function(ev) {
  var DataId = ev.target.parentNode.getAttribute('data-id');
  var selected_table =$("#rows .sim-row[data-id='"+DataId+"']");
  ev.dataTransfer.setData("text",DataId);
}

drop = function(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
#content {
  height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="content" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<div id="rows">
  <table class="sim-row" data-id="1001" id="1001">
    <tr>
      <td class="sim-row-header1 sim-row-edit width100" data-type="title">Main Title</td>                         
      </tr>
   </table>
</div>  

<div class="buttons"  data-id="1001" id="1001" draggable="true" ondragstart="drag(event)" ondrop="drop(event)">
  <img id="image"src="https://www.w3schools.com/html/img_logo.gif" alt="title">Title
</div>

希望这会对你有所帮助。

【讨论】:

  • 感谢您的回复。我看到上面的小提琴也很好用。但是我的图像在左侧面板内,而 div 在右侧。因此,每当我尝试拖动图像时,它都会更改 url 但不可拖动。所以请指导我
  • 你能为我创建一个jsFiddle,以便我可以帮助你更胖。
  • 是的,给我几分钟
  • 谢谢,可能是 jquery 没有加载或者可能是任何其他问题,这就是它以前无法正常工作的原因。现在它工作正常。我需要你的更多帮助。不可能像任何时候我拖动图像但图像不能被拖动。而不是那个表需要被拖动。
  • @AnkitDoshi 。给你一个解决方案jsfiddle.net/ed5bmth2/2。请更新问题,如果你满意,请接受并投票给答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多