HTML / JavaScript событие, когда элемент перетаскивается на другой элемент

Если вы ищете функцию, совместимую с потоком, которая может обрабатывать двухмерные массивы с любым типом элемента, вы можете использовать функцию ниже.

const getUniqueCombinations = <T>(items : Array<Array<T>>, prepend : Array<T> = []) : Array<Array<T>> => {
    if(!items || items.length === 0) return [prepend];

    let out = [];

    for(let i = 0; i < items[0].length; i++){
        out = [...out, ...getUniqueCombinations(items.slice(1), [...prepend, items[0][i]])];
    }

    return out;
}

Визуализация операции:

in:

[
    [Obj1, Obj2, Obj3],
    [Obj4, Obj5],
    [Obj6, Obj7]
]

out:

[
    [Obj1, Obj4, Obj6 ],
    [Obj1, Obj4, Obj7 ],
    [Obj1, Obj5, Obj6 ],
    [Obj1, Obj5, Obj7 ],
    [Obj2, Obj4, Obj6 ],
    [Obj2, Obj4, Obj7 ],
    [Obj2, Obj5, Obj6 ],
    [Obj2, Obj5, Obj7 ],
    [Obj3, Obj4, Obj6 ],
    [Obj3, Obj4, Obj7 ],
    [Obj3, Obj5, Obj6 ],
    [Obj3, Obj5, Obj7 ]
]
-2
задан Pradeep Charan 17 January 2019 в 02:34
поделиться

2 ответа

Это событие dragenter .

ondragstart = e => e.dataTransfer.setData('text', '');
// set the class when entering over #target
target.ondragenter = e => target.classList.add('draghover');
// remove when leaving
target.ondragleave = e => target.classList.remove('draghover');
#target {
  width: 250px;
  height: 250px;
  border: 1px solid;
}

#target.draghover {
  background: #CCC;
}
<div draggable="true">drag me over the target</div>
<div id="target"></div>

0
ответ дан Kaiido 17 January 2019 в 02:34
поделиться

Да, есть обработчик событий ondrag() , который срабатывает во время перетаскивания элемента. Если вы хотите вызвать функцию в самом начале действия перетаскивания, есть также обработчик событий ondragstart() .

Если вы хотите захватить, когда элемент перетаскивается поверх элемента (но не отброшен), есть ondragenter() , который срабатывает один раз, как элемент перетаскивается в элемент, а также ondragover() , который срабатывает многократно, когда элемент перетаскивается поверх элемента. 1112]

0
ответ дан Obsidian Age 17 January 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: