但是由于javascript的dom事件传播机制,不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件,不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
所有jquery提供了mouseenter和mouseleave事件来终止事件传播,使事件只发生在选中的元素上。
只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。
只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
例
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery中的mouseenter和mouseleave事件</title> <style type="text/css"> *{padding:0;margin:0; font-size:12px} ol,ul{list-style:none} .sns-func{ position:relative; margin:0 auto; width:200px; height:20px; line-height:20px; background-color:#999} .sns-func li.func-list{float:left; padding:0 8px;line-height:20px; font-family:"5b8b4f53"} .sns-func li.sns-setting{ border:1px solid #D1D6E2;padding:0 7px; border-bottom:none; background-color:#FFFFFF; position:relative; z-index:100 } .sns-func .sns-setting-box{position:absolute; top:20px; left:0px; width:66px; border:1px solid #CDCDCD; background-color:#FFFFFF; z-index:99;} .sns-func .sns-setting-box li.on a{background-color:#CFDDE3;} .sns-func .sns-setting-box a:link,.sns-func .sns-setting-box a:visited{ display:block; height:17px; color:#555555;text-decoration:none; padding:5px 0 0 7px; line-height:1} .sns-func .sns-setting-box a:hover{background-color:#CFDDE3;color:#555555;text-decoration:none;} </style> <script type="text/javascript" src="h/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#sel-down-w").mousemove(function(){ $(".sns-setting-box").slideDown().mouseleave(function(){ $(this).slideUp() }) }) }); </script> </head> <body> |
兼容IE6的mouseenter和mouseleave事件
在IE6下,鼠标移上所指的内容,会闪来闪去,所以用jQuery里mouseenter和mouseleave,
额,这语法很怪异,我从来没见过这样的。
恩,收集起来,作为参考吧。
代码如下 | 复制代码 |
$(document).ready(function(){ $(".search-photo-img").mouseenter(function(){ $(this).css("background","url(module/search/templates/default/images/photo-img-onbg.gif)").mouseleave(function(){ $(this).css("background",""); }); }); }); |