我有几个可拖动的元素

<div Class="question-item" draggable="true">Box 1: Milk was a bad choice.</div>
<div class="question-item" draggable="true">Box 2: I'm Ron Burgundy?</div>
<div class="question-item" draggable="true">Box 3: You ate the entire wheel of cheese?     </div>
<div class="question-item" draggable="true">Box 4: Scotch scotch scotch</div>

我有以下事件处理程序:
var $questionItems = $('.question-item');

$questionItems
  .on('dragstart', startDrag)
  .on('dragend', removeDropSpaces)
  .on('dragenter', toggleDropStyles)
  .on('dragleave', toggleDropStyles);


function startDrag(e){
  console.log('dragging...');
  addDropSpaces();
  e.stopPropagation();
}

function toggleDropStyles(){
  $(this).toggleClass('drag-over');
  console.log(this);
}


function addDropSpaces(){
  $questionItems.after('<div class="empty-drop-target"></div>');
}

function removeDropSpaces(){
  console.log("dragend");
  $('.empty-drop-target').remove()
}

为什么它仅适用于第一个可拖动对象。如果我拖动,请说出最后一个可拖动对象-dragend事件将立即触发。 (我不想使用jQuery UI btw)

对我来说这没有意义-看起来像个虫子。

我在OSX上使用Chrome v 30。

这是指向JSFiddle的链接:http://jsfiddle.net/joergd/zGSpP/17/

(编辑:这是以下问题的重复:dragend, dragenter, and dragleave firing off immediately when I drag-但我认为原始海报可以与jQuery UI配合使用,而我希望它是HTML5原生的)

最佳答案

正如我在dragend, dragenter, and dragleave firing off immediately when I drag主题中提到的那样,为我解决了这个问题(看来是Chrome的错误),是在处理程序中添加了10毫秒的setTimeout并在该超时时间内操作DOM。

09-11 00:17