I have implemented drag and drop functionality on a set of images. the problem i am having is that it only works when i drag from the picture border not the picture itself??
I have tried various things but it doesnt seem to work. If i drop a picture not on the right place this also changes to a cropped box too.
<script type="text/javascript">
var source;
function dragStarted(evt){
//start drag
source=evt.target;
//set data
evt.dataTransfer.setData("image/jpeg", evt.target.innerHTML);
//specify allowed transfer
evt.dataTransfer.effectAllowed = "move";
}
function draggingOver(evt){
//drag over
evt.preventDefault();
//specify operation
evt.dataTransfer.dropEffect = "move";
}
function dropped(evt){
//drop
evt.preventDefault();
evt.stopPropagation();
//update text in dragged item
source.innerHTML = evt.target.innerHTML;
//update text in drop target
evt.target.innerHTML = evt.dataTransfer.getData("image/jpeg");
}
</script>
<ul class="photos columns-3">
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6001.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6013.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6081.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6268.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6345.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6378.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6397.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6413.jpg" width="200" height="200"/></li>
<li draggable="true" ondragstart="dragStarted(event)" ondragover="draggingOver(event)" ondrop="dropped(event)"><img src="images/dsc_6417.jpg" width="200" height="200"/></li>
</ul>
Actually when you put a mouse pointer on image, it is considering the image event and you have done the code for li tag
You can try below code with some changes :
var source,imgsrc;
dragStarted = function (evt){
//start drag
source=evt.target;
if(evt.target.tagName == "IMG" ) {
source=evt.target.parentNode;
imgsrc=source;
}
//set data
evt.dataTransfer.setData("image/jpeg", source.innerHTML);
//specify allowed transfer
evt.dataTransfer.effectAllowed = "move";
}
draggingOver = function (evt){
//drag over
evt.preventDefault();
//specify operation
evt.dataTransfer.dropEffect = "move";
}
dropped = function (evt){
//drop
evt.preventDefault();
evt.stopPropagation();
imgsrc=evt.target;
if(evt.target.tagName == 'IMG' ) {
imgsrc=evt.target.parentNode;
}
//update text in dragged item
source.innerHTML = imgsrc.innerHTML;
//update text in drop target
imgsrc.innerHTML = evt.dataTransfer.getData("image/jpeg");
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.