AngularJS指令拖动对象如何删除不需要的鼠标效果
AngularJS Directive dragging object how to remove Undesired Mouse Effect
这是这个 plunk,鼠标向上事件中的一些代码:
element.css({
top: (y + 20) + 'px',
left: (x + 20) + 'px'
});
这会在两个方向上将对象的位置偏移 20 px。但是当你再次点击对象来拖动它时,它会跳跃,然后当你释放它时,它会再次跳跃。
这是不希望的。如果我创建了,则有效地捕捉到网格系统。每次用户掉落一个物体时,当他们捡起它或捡起另一个物体时,我不希望物体在屏幕上射击的这种不良行为。
显然,对 plunk 的影响并没有那么大,但是,当您使用此快照到网格系统时,它会变得非常夸张。
之所以这样,是因为我不明白所有价值观的来源,所以如果有人能启发我,那就太好了,并向我展示了解决问题的道路。
你做错了什么,就是你没有根据你正在计算的新 newX 和 newY 值更新 x 和 y 的值。
function mouseup() {
var newX = canvas.calcPos(columns, x, 20, 740);
var newY = canvas.calcPos(rows, y, 10, 670);
x = newX; //What you need to be doing
y = newY;
widget.css({
left: newX + 'px',
top: newY + 'px'
});
console.log(genCoord(x, y), genCoord(newX, newY));
function genCoord(val1, val2){
var res = '(' + val1 + ',' + val2 + ')';
return res;
}
$document.off('mousemove', mousemove);
$document.off('mouseup', mouseup);
}
这应该可以有效地消除由全局范围保留的 x 和 y 引起的额外偏移。
这是更新的 plunkr
相关文章:
- 如何在不需要单击按钮的情况下获取选项的值
- Javascript不需要的关闭行为
- 删除客户端浏览器上不需要的内容
- 不允许在字段中输入不需要的字符
- 不需要的JSON响应
- 如何使图像适合TD,而不需要包装在不同的屏幕分辨率上
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- jQuery自动完成显示不需要的动态html标记
- 在Knockout js中创建一个包含多行的表,而不需要推送
- AngularJs正在解码HTML字符(不需要)
- jQuery regex从文本链接-添加不需要的域到链接
- 防止从浏览器到应用商店的不需要的重定向
- 外部解析RSS提要,不需要像谷歌和服务器端那样的任何库
- AngularJS指令拖动对象如何删除不需要的鼠标效果
- 将鼠标快速移入/移出容器会导致不需要的 jQuery 动画
- jQuery-需要删除鼠标离开时的值,但不需要删除鼠标进入时的值
- 通过javascript滚动内容时不需要的鼠标事件
- CKEditor:通过JS从内联编辑器中逃脱编辑器焦点(不需要鼠标点击)
- 优化触摸屏的 Web 界面(处理不需要的鼠标拖动等)
- HTML canvas Javascript鼠标事件,不需要jQuery