HOW TO DRAG AND DROP ELEMENTS

Sep 02, 2022

ุงู„ุณู„ุงู… ุนู„ูŠูƒู… ๐Ÿ‘‹

 

ุชุนุงู„ูˆุง ู†ุดูˆู ุงู„ู†ู‡ุงุฑุฏุฉ ุฅุฒุงูŠ ู†ู‚ุฏุฑ ู†ุนู…ู„ drag & drop ู„ู„ elements ๐Ÿง

 

ุฃูˆู„ุงู‹  ู„ุงุฒู… ู†ุถูŠู  draggable=true  ู„ู„ element  ุงู„ู„ูŠ ู‡ุนู…ู„ู‡ drag & drop ูˆ ูƒู…ุงู† ู‡ู†ุฏูŠู„ู‡ ุฅุณู… ูƒู„ุงุณ ู…ูุนุจุฑ ุนุดุงู† ู†ุณุชุฎุฏู…ู‡ ุจุนุฏูŠู† ุฒูŠ ุงู„ุฅุณู… ุฏุง element-dragged-dropped ๐Ÿค™

 

ุซุงู†ูŠุงู‹ ู‡ู†ุถูŠู ูƒู„ element ู…ู† ุฏูˆู„ ุฌูˆุง parent ุฎุงุต ุจูŠู‡, ูˆ ู‡ู†ุนุฑู ู„ูŠู‡ ุนู…ู„ู†ุง ูƒุฏุง .. ุชุนุงู„ูˆุง ูŠู„ุง ุนุดุงู† ู†ุดูˆู ุงู„ูƒูˆุฏ ู‡ูŠูƒูˆู† ุดูƒู„ู‡ ุฅูŠู‡ ๐Ÿ˜‹

 

const items = document.querySelectorAll('.element-dragged-dropped');

items.forEach(item => {
    item.addEventListener('dragstart', dragStart);
});

function dragStart(e) {
    e.dataTransfer.setData('text/plain', e.target.id);
}

/* drop targets */
const boxes = document.querySelectorAll('.parent-dragged-dropped-elements');

boxes.forEach(box => {
    box.style.cursor = "pointer";
    box.addEventListener('dragenter', dragEnter)
    box.addEventListener('dragover', dragOver);
    box.addEventListener('dragleave', dragLeave);
    box.addEventListener('drop', drop);
});

function dragEnter(e) {
    e.preventDefault();

    if (e.target.classList[0] == "element-dragged-dropped") {
        e.target.classList.add('drag-over');
    }
}

function dragOver(e) {
    e.preventDefault();

    if (e.target.classList[0] == "element-dragged-dropped") {
        e.target.classList.add('drag-over');
    }
}

function dragLeave(e) {
    e.target.classList.remove('drag-over');
}

function drop(e) {
    e.target.classList.remove('drag-over');

    // get the draggable element
    const id = e.dataTransfer.getData('text/plain');
    const draggable = document.getElementById(id);

    // add it to the drop target
    if (e.target.classList[0] == "element-dragged-dropped") {
        e.target.previousSibling.parentElement.after(draggable.previousSibling.parentElement);
    }
}

 

ูŠู„ุง ุจูŠู†ุง ู†ุดุฑุญ ุงู„ูƒูˆุฏ ุงู„ู„ูŠ ูุงุช ุฏุง ๐Ÿ˜‹

 

ุฃูˆู„ุงู‹ ุฅุญู†ุง ุฌุจู†ุง ูƒู„ ุงู„ elements ุงู„ู„ูŠ ู„ูŠู‡ุง ูƒู„ุงุณ element-dragged-dropped  ูˆ ุนู…ู„ู†ุง ู„ูˆุจ ุนู„ูŠู‡ู… ุนุดุงู† ู†ุฏูŠู„ู‡ู… event ุงู„ dragstart ูˆ ู†ูุณ ุงู„ูƒู„ุงู… ุฏุง ู…ุน ุงู„ parent ุงู„ุฎุงุต ุจูƒู„ element ูˆ ูƒู…ุงู† ุฒูˆุฏู†ุง ุนู„ูŠ ุงู„ events ุฌุฒุก ุฎุงุต ุจุงู„ styling ุจุญูŠุซ ุฅู†ู‡ ูŠุธู‡ุฑ hand ุฃุซู†ุงุก ุนู…ู„ูŠุฉ ุงู„ drag & drop ูˆ ููŠ ูƒู„ ุงู„ functions ุนุฏุง dragLeave ูƒู†ุช ุจุนู…ู„ check ุนู„ูŠ ุงู„ element ุงู„ู„ูŠ ุจุนู…ู„ู‡ drag & drop ู„ูˆ ู„ูŠู‡ ุฅุณู… ูƒู„ุงุณ ู…ูุนูŠู† ุจุฏูŠู„ู‡ ูƒู„ุงุณ ู…ู† ุนู†ุฏูŠ -ู‡ู†ุดูˆูู‡ ุจุนุฏูŠู†- ุจุนุฑู ุฅู† ุฏุง ู‡ูˆ  ุงู„ู„ูŠ ุจูŠุญุตู„ู‡ drag ูˆ ููŠ ุนู„ู…ู„ูŠุฉ ุงู„ drop ูƒู†ุช ุจุนู…ู„ ู†ูุณ ุงู„ุญุงุฌุฉ ูˆ ุจุฌูŠุจ ุงู„ parent ุจุชุงุน ุงู„ element ุฏุง ุนุดุงู† ุฃุถูŠู ุงู„ element ุฏุง ุจุนุฏู‡ ูˆ ุนุดุงู† ูƒุฏุง ุถูŠูู†ุง ุงู„ parent  ๐Ÿ˜Ž

 

ูˆ ุฏู„ูˆู‚ุชูŠ ู‡ู†ุดูˆู ุงู„ูƒู„ุงุณ ุงู„ู„ูŠ ูƒู†ุง ุจู†ุถูŠูู‡ ู„ู„ element ุนุดุงู† ูŠุฎู„ูŠ ุดูƒู„ู‡ ุฌู…ูŠู„ ๐Ÿคฉ

 

.drag-over {
    border: dashed 3px gray;
}

 

ูˆ ุจูƒุฏุง ุฃูƒูˆู† ุฎู„ุตุช ูˆ ุฃุชู…ู†ูŠ ุชูƒูˆู† ุฅุณุชูุฏุช โœ”


AI Assistant

Choose AI provider

Text Tools

Make content clear and easy to read

Have a Question?

Get clear answers based on this content

0/500
Mahmoud Ramadan

Mahmoud Ramadan

Mahmoud is the creator of Digging Code and a contributor to Laravel since 2020.