2-3练习代码中,当鼠标拖动过快...

2-3练习代码中,当鼠标拖动过快...

2-3练习代码中,当鼠标拖动过快,出了$('mian')正方形,然后放开鼠标。鼠标再移回正方形内时,不用点击,$('mian')也会跟着鼠标移动,请问,这是什么原因?

下面是我的代码:

<body>

<div id="dialog" class="dialog">

<div class="content"></div>

</div>

<script>

var isMouseDown=false;

var lastPoint={};

var width=$(window).width();

var height=$(window).height();


var w_dialog=$("#dialog").width();

var h_dialog=$("#dialog").height();


$("#dialog").on("mousedown",function(e){

isMouseDown=true;

lastPoint.x=e.pageX;

lastPoint.y=e.pageY;

}).on("mousemove",function(e){

if(isMouseDown){

var dialog=$("#dialog");

var targetX=parseInt(dialog.css("left"))+(e.pageX-lastPoint.x);

var targetY=parseInt(dialog.css("top"))+(e.pageY-lastPoint.y);

var w=targetX+w_dialog;

var h=targetY+h_dialog;


//当鼠标出了$("#dialog")区域

if(e.pageX<targetX || e.pageY<targetY || e.pageX>(targetX+w_dialog) ||e.pageY>(targetY+h_dialog)){

isMouseDown=false;

lastPoint = {};

}else{

if(targetX<=0){

dialog.css("left",'0px');

}else if(w>=width){

dialog.css("left",(width-w_dialog)+'px');

}else{

dialog.css("left",targetX+'px');

}


if(targetY<=0){

dialog.css("top",'0px');

}else if(h>=height){

dialog.css("top",(height-h_dialog)+'px');

}else{

dialog.css("top",targetY+'px');

}


lastPoint.x=e.pageX;

lastPoint.y=e.pageY;

}



}

}).on("mouseup",function(){

isMouseDown=false;

lastPoint = {};

})

</script>

</body>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

当拖动太快,鼠标超出区域块内,然后释放停止,这样是在document上面释放的,并不是在你绑定的dialog元素上面,所以鼠标移入进入,区域块还是会移动。可以给document绑定事件,参考:

http://img1.sycdn.imooc.com//climg/5b231bf400014a0505400082.jpg

自己测试下,祝学习愉快~~

  • 墨墨砂 提问者 #1
    非常感谢!
    2018-06-19 19:55:53
  • 墨墨砂 提问者 #2
    亲,这样写解决了我的问题,不过,有些地方不太懂,1,给document绑定事件,那么在dialog元素外也能触发点击,拖动事件了?2,如果是两个甚至多个内容需要拖动呢?
    2018-06-19 20:00:31
好帮手慕星星 2018-06-20 09:53:22

你这三个事件是连着一起写的,这样就会绑定在一个元素上面,你可以在mousedown的时候绑定指定的元素,另外两个事件绑定document。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师