html点击事件页面不滚动,jQuery实现拖动,且拖动时不触发点击事件

这篇博客介绍了一个JavaScript代码示例,用于解决在使用jQuery实现拖动功能时遇到的点击事件被意外触发的问题。作者通过设置标志变量`isClick`来区分拖动和点击,并在拖动过程中调整元素的位置,避免了点击事件的误触发。在鼠标抬起时,根据`isClick`的状态决定是否执行点击事件。这是一个关于前端开发中JavaScript交互和事件处理的实例。
摘要由CSDN通过智能技术生成

jQuery实现拖动是网上抄的代码,但发现有一个JavaScript拖动时触发点击事件的BUG,让基友老嫖给修复了。

#move{

width: 200px;

height: 200px;

background-color: red;

position: absolute;

cursor: move;

}

Hello World!

$('#move').on('mousedown', function(e) { //鼠标按下

// 判断一下这个按下是点击还是拖动

var isClick = true;

$(document).on('mousemove', (e) => {//鼠标移动

let left = e.clientX - $(this).width() / 2//计算元素left值

let top = e.clientY - $(this).height() / 2//计算元素top值

top = suan(top, 0, $(document).innerHeight() - $(this).height())//调用封装的方法

left = suan(left, 0,$(document).innerWidth() - $(this).width())//调用封装的方法

$(this).css({ //给盒子设置坐标

left,

top

})

//拖动后,把isClick设为false,后面就不会执行点击事件

isClick = false;

e.preventDefault();

})

$(document).on('mouseup', (e) => {//鼠标抬起

//当isClick为true时,就执行点击事件

if( isClick ){

msgboxurl()

}

$(document).off('mousemove mouseup')//移除鼠标移动、鼠标抬起事件

})

})

function suan(o, min, max) { //重复封装

o < min ? o = min : o > max ? o = max : ''//限制出界

return o

}

function msgboxurl(){

alert("点击效果");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值