嵌套元素的mouseover和mouseout事件

今天在帮别人解决一个关于mouseover和mouseout问题的时候发现了一个原来没想到的问题,斗胆share下,高手莫喷。。

问题:有嵌套的三层div。div111最外层,div222中间层,div333最内层。
效果:当鼠标位于div的上方时,相应层的mouseover触发,当属性从div的上方离开时,相应层的mouseout触发。

此段代码同时也解决了mouseover和mouseout由于子元素的冒泡而产生的一些问题。不知道有没更好的方案?

<!DOCTYPE html>        
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<style>
#div111{
width:200px; height :200px ; background :red; margin :100px auto auto 100px; border: 2px solid white;
}
#div222{
width:100px; height :100px; background :yellow; border: 2px solid white;
}
#div333{
width:50px; height :50px; background :blue; border: 2px solid white;
}
</style>
</head>
<body>
<div id="div111">
<div id="div222">
<div id="div333"></div>
</div>
</div>
<div id="log"></div>
<script type ="text/javascript" >
function mouse_over(event){
var elem = $(event.currentTarget),
fromElem = $(event.relatedTarget);
if(elem.has(fromElem).length === 0 || !fromElem.is(elem)){
elem.css('border-color', 'green');
log(elem.attr('id'), event.type);
}
};
function mouse_out(event){
var elem = $(event.currentTarget),
toElem = $(event.relatedTarget);
if(elem.has(toElem).length === 0 || !toElem.is(elem)){
elem.css('border-color', 'white');
log(elem.attr('id'), event.type);
}
};
function log(id, type){
$("#log").append("<div><span>" + id + "触发了<strong><font color='red'>" + type + "</font></strong>事件</span></div>");
}
$('#div111').mouseover(mouse_over);
$('#div222').mouseover(mouse_over);
$('#div333').mouseover(mouse_over);
$('#div111').mouseout(mouse_out);
$('#div222').mouseout(mouse_out);
$('#div333').mouseout(mouse_out);
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值