,可以通过以下几种方式实现:
子对象拖动事件处理函数(event) {
event.stopPropagation();
// 拖动逻辑处理
}
子对象拖动事件处理函数(event) {
const threshold = 5; // 拖动阈值
let startX = event.clientX;
let startY = event.clientY;
document.addEventListener('mousemove', moveHandler);
document.addEventListener('mouseup', upHandler);
function moveHandler(event) {
const distanceX = Math.abs(event.clientX - startX);
const distanceY = Math.abs(event.clientY - startY);
if (distanceX > threshold || distanceY > threshold) {
// 拖动逻辑处理
document.removeEventListener('mousemove', moveHandler);
document.removeEventListener('mouseup', upHandler);
}
}
function upHandler(event) {
document.removeEventListener('mousemove', moveHandler);
document.removeEventListener('mouseup', upHandler);
}
}
子对象拖动事件处理函数(event) {
父对象.classList.add('disable-click'); // 或者通过其他方式禁用父对象的单击事件
document.addEventListener('mousemove', moveHandler);
document.addEventListener('mouseup', upHandler);
function moveHandler(event) {
// 拖动逻辑处理
}
function upHandler(event) {
父对象.classList.remove('disable-click'); // 或者通过其他方式恢复父对象的单击事件
document.removeEventListener('mousemove', moveHandler);
document.removeEventListener('mouseup', upHandler);
}
}
以上是在拖动子对象时防止父对象上的单击事件的几种实现方式。具体的选择取决于你的实际需求和项目的具体情况。
领取专属 10元无门槛券
手把手带您无忧上云