我正在创建一个可以拖动,旋转和缩放的元素。它的基本结构如下:
<div class='interactable' @mousedown='handleDown' @mouseup='handleUp'>
</div>
<script>
data: {
dragging: false,
resizing: false,
rotating: false,
},
methods: {
handleDown () {
// code that sets dragging, resizing, rotating to true
}
handleUp () {
this.dragging = false
this.resizing = false
this.rotating = false
}
}
</script>
没关系。只有一个问题:如果我将鼠标释放到mouseup
之外,则不会触发div
(因为mouseup
事件位于interactable
div中,因此有意义。)
处理这种情况的常用方法是什么?
答案 0 :(得分:2)
您可以使用标记mouseUp
来检测父元素中的isDown
。
在孩子的isDown
上设置mousedown
为真
在孩子和父母的isDown
上设置mouseup
false。
您可以使用多个变量来检测多个元素。
希望代码是自我解释的:
var isDown = false;
function mouseup() {
if (isDown) {
alert("Mouse down has occured in child");
}
isDown = false;
}
function mousedown() {
isDown = true;
}
&#13;
.parent {
width: 300px;
height: 300px;
background: blue;
padding: 50px;
box-sizing: border-box;
}
.child {
width: 200px;
height: 200px;
background: red;
}
&#13;
<div class="parent" onmouseup="mouseup();">
<div class="child" onmousedown="mousedown()" onmouseup="mouseup()">
</div>
</div>
&#13;