Note that there are some explanatory texts on larger screens.

plurals
  1. POcss / html5 :hover state remains after drag and drop
    primarykey
    data
    text
    <p>I'm using html5's drag and drop functionalities to rearrange dom elements on screen - I attach css behavior to the various states of dragging and dropping when I do this, but the problem I'm experiencing is that the hover state remains even after I've dragged, dropped, and moused out of a DOM element. Here's my code:</p> <p>JAVASCRIPT:</p> <pre><code>function addDragListeners(){ $('.segmentListItem').each(function(index){ $(this)[0].addEventListener('dragstart',handleDragStart,false); //rollover for current $(this)[0].addEventListener('drop',handleDrop,false); //drops dragged element $(this)[0].addEventListener('dragover',handleDragOver,false); //allows us to drop $(this)[0].addEventListener('dragenter',handleDragEnter,false); //rollover for target $(this)[0].addEventListener('dragleave',handleDragLeave,false); //sets dragged item back to normal $(this)[0].addEventListener('dragend',handleDragEnd,false); //sets all back to normal }); } function handleDragEnter(e) { // this / e.target is the current hover target. this.classList.add('over'); } function handleDragLeave(e) { this.classList.remove('over'); // this / e.target is previous target element. } function handleDragEnd(e){ $('.segmentListItem').removeClass('over'); //removes the over class on all elements } function handleDragStart(e){ draggedItem = this; e.dataTransfer.effectAllowed = 'move'; } 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; } function handleDrop(e){ if (e.stopPropagation) { e.stopPropagation(); } if (draggedItem != this) { //MH - swap if we're not dragging the item onto itself var draggedIndex = $('.segmentListItem').index($(draggedItem)); var targetIndex = $('.segmentListItem').index($(this)); if (draggedIndex &gt; targetIndex){ $(draggedItem).insertBefore($(this)); } else { $(draggedItem).insertAfter($(this)); } } return false; } </code></pre> <p>CSS:</p> <pre><code>a { border-radius: 10px; } a:hover { background: #ccc; } .segmentListItem { text-align:center; width: 50px; margin-right: 5px; font-size: 16px; display:inline-block; cursor:move; padding:10px; background: #fff; user-select: none; } .segmentListItem.over { background: #000; color: #fff; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload