前端——鼠标监听事件

7 篇文章 0 订阅

前端——部分鼠标监听事件

下午跟着视频做一个拖拽案例的时候,想实现一个简单想法,如下图所示。就是在拖拽的时候,右边的数字变成红色,不拖拽时又变回原来的颜色。
拖拽案例
有想法就马上执行,我第一反应当然是用鼠标监听事件来做,但是在mouseover()和mouseout()、mouseenter()和mouseleave()或者hover()中应该选择哪个来做呢,尴尬的是好像都不行,因为拖拽有一个特点,只要第一次点住目标不放,后面鼠标不在目标上也能拖拽目标,这就导致拖拽过程中鼠标一旦偏出目标,数字就会变回原色。那如果只设置鼠标移入事件呢,好像更不行,虽然只设置移入事件,鼠标在拖拽中就算移出目标也不会变成原色,但是鼠标放开数字也变不回原色了,和我想的不一样。百度了一下,原来还有个mousedown()和mouseup(),好吧,小白还是小白,有了这个应该就好办了。于是就有了下面的代码。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
	<script type="text/javascript" src="js/jquery-ui.min.js"></script>
	<script type="text/javascript">
			
		$(function(){
			$('.box').draggable({
				//限制在X轴向拖动
				axis:'x',
				//限定在父级范围内拖动
				containment:'parent',
				//设置拖动时候的透明度
				opacity:0.6,
				drag:function(ev,ui){
					//console.log(ui); 
					//document.title = ui.position.left;
					$('#showNumber').val(parseInt(100*(ui.position.left/750)));
					$('.con_slide').css({'width':ui.position.left});
				}
			});
			$(window).mousedown(function(){
				$('#showNumber').css({'color':'red'});
			});
			$(window).mouseup(function(){
				$('#showNumber').css({'color':'#000'});
			});	
		});
	</script>
	<style type="text/css">
		.con{
			width:800px;
			height:50px;
			border:1px solid #000;
			margin:50px auto 0;
		}
		.con_slide{
			background:#666;
			width:0px;
			height:50px;
			border:0px;
			float:left;
			opacity:0.3;
			filter:alpha(opacity=30);
		}
		.box{
			width:50px;
			height:50px;
			background-color:lightblue;

		}
		.box:hover{
			cursor:pointer;
		}
		#showNumber{
			position:absolute;
			width:48px;
			height:48px;
			text-align:center;
			line-height:50px;
			top:50px;
			left:50%;
			margin-left:420px;
		}
	</style>
</head>
<body>
  <div class="con">
  	<div class="con_slide"></div>
		<div class="box"></div>
	</div>
	<input type="text" name="" id="showNumber">
</body>
</html>

大功告成了,用浏览器执行后就有了上面动态图的效果了,虽然很简单😂,最后放出部分鼠标监听事件,加深记忆。

//鼠标移入、移出,子元素也会跟着触发
$('.con').mouseover(function(){
	alert('移入');
});
$('.con').mouseout(function(){
	alert('移出');
});

//鼠标移入、移出,子元素不会触发
$('.con2').mouseenter(function(){
	alert('移入');
});
$('.con2').mouseleave(function(){
	alert('移出');
});

//mouseenter()和mouseleave()可以合并成以下写法
$('.con2').hover(function(){
	alert('移入');
},function(){
	alert('移出');
});

//当然还有监听鼠标点击事件
$('.con2').mousedown(function(){
	alert('点击');
});
$('.con2').mouseup(function(){
	alert('松开');
});

当然鼠标监听事件还有很多,像滚轮等,之后遇到难点再来感概感概。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值