如何使用HTML5拖放元素?

时间:2017-01-12 20:45:36

标签: javascript html5

我正在使用HTML Rocks中的拖放tutorial。当前教程基本上是对拖动元素及其被放置的元素进行切换。 A点到达B点,B点到A点。

|A|B|C|  -->  |B|A|C|
|D|E|F|       |D|E|F|

我正试图改变这种逻辑。如果我拖动E点,它应该在其他点之间。

|A|B|C|  -->  |A|E|B|
|D|E|F|       |C|D|F|

这是我对此的demo

如果要更改属性dropEffect,还是需要创建一个新div来添加我们正在移动的项目?

function handleDragStart(e) {
  this.style.opacity = '0.4';  // this / e.target is the source node.
}

function handleDragOver(e) {
  if (e.preventDefault) {
    e.preventDefault(); // Necessary. Allows us to drop.
  }

  e.dataTransfer.dropEffect = 'move';  // See the section on the DataTransfer object.

  return false;
}

1 个答案:

答案 0 :(得分:0)

由于@tbirell

,我找到了这样做的方法

我正在使用Jquery UI library来改变我在开始时所做的所有逻辑

我没有使用DIV,而是用UL和LI替换它们

<ul id="sortable">
  <li class=" ui-state-default">Item 1</li>
  <li class=" ui-state-default">Item 2</li>
  <li class=" ui-state-default">Item 3</li>
  <li class=" ui-state-default">Item 4</li>
  <li class=" ui-state-default">Item 5</li>
  <li class=" ui-state-default">Item 6</li>
</ul>

该库是管理其逻辑的库。

$( function() {
    $( "#sortable" ).sortable({
      revert: true
    });
    $( "#draggable" ).draggable({
      connectToSortable: "#sortable",
      helper: "clone",
      revert: "invalid"
    });
    $( "ul, li" ).disableSelection();
  } );

工作demo

的链接