을 드래그 앤 드롭을 사용할 때의 난이 간단한 RxJS를 통해 드래그 N 드롭에 대한 코드가 있다고 가정합시다 요소에 클릭을 방지하는 방법 :RxJS : N
const { fromEvent } = Rx.Observable;
const target = document.querySelector('.box');
const mouseup = fromEvent(target, 'mouseup');
const mousemove = fromEvent(document, 'mousemove');
const mousedown = fromEvent(target, 'mousedown');
document.getElementById("click")
.addEventListener("click",() => {
alert('clicked');
})
const mousedrag = mousedown.selectMany((md) => {
const startX = md.clientX + window.scrollX,
startY = md.clientY + window.scrollY,
startLeft = parseInt(md.target.style.left, 10) || 0,
startTop = parseInt(md.target.style.top, 10) || 0;
md.preventDefault();
return mousemove.map((mm) => {
mm.preventDefault();
return {
left: startLeft + mm.clientX - startX,
top: startTop + mm.clientY - startY
};
}).takeUntil(mouseup);
});
const subscription = mousedrag.subscribe((pos) => {
target.style.top = pos.top + 'px';
target.style.left = pos.left + 'px';
});
그리고 간단한 HTML을
<div class="box">
<a id="click">Click test</a>
</div>
이제 상자를 클릭하고 끌어 오면 드래그됩니다. 그러나 "Click test"를 클릭하여 드래그하면 OK로 드래그되지만 드래그를 중지하면 경고가 표시됩니다. 이것을 피하는 방법?
preventDefault
우리가 아이를 클릭 한 이후로 작동하지 않습니다. 우리가 전파를 막을 것이기 때문에 stopPropagation
또한, 작동하지 않을 것입니다,하지만
작동하지만 기본적으로는 (i가 다른 구성 요소에 4-5 태그가 있다면 무엇을) 해킹/내 아이디어와 이벤트를 클릭 문서화하는 후크를 추가했다가 useCapture를 누른 다음 마우스 이동 이벤트가 발생하면 preventDefault() 및 stopPropogation을 사용하거나 취소하십시오. 하지만 그걸 제대로 작동시키지 못했습니다. – gerasalus