从之前的学习我们知道,鼠标移入和鼠标移出这两个事件往往都是配合一起使用的,而我们需要分别对这两个事件定义。为了简化代码,jQuery为我们提供hover()方法一次性定义这两个事件,这就是所谓的“合成事件”。

语法:

$().hover(fn1, fn2)

说明:

参数fn1表示鼠标移入事件触发的处理函数,参数fn2表示鼠标移出事件触发的处理函数。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("div").hover(function(){ $(this).css("color", "red"); },function(){ $(this).css("color", "black"); }) }) </script> </head> <body> <div>绿叶,给你初恋般的感觉。</div> </body> </html>

浏览器预览效果如图所示。

分析:

初学的小伙伴对hover()这种写法可能会感到很陌生,也老是记不住。在hover()方法中,说白了就是插入两个function(){},很简单。每次在使用hover()方法时,我们先把形式写出来,如下所示。

$().hover(function(){}, function(){})

形式写好了,再去编写两个function(){}中的内容,这样就不会导致书写错误了:

$().hover(function(){ //鼠标移入 }, function(){ //鼠标移出 })

hover()方法,准确来说是替代了mouseenter()和mouseleave(),而不是替代mouseover()和mouseout()。因此这个例子的hover()代码可以等价于:

//鼠标移入事件 $("div").mouseenter(function(){ $(this).css("color", "red"); }) //鼠标移出事件 $("div").mouseleave(function(){ $(this).css("color", "black"); })

有些小伙伴可能会问:“对于上面这个例子,我们使用CSS的:hover伪类不一样可以实现吗?而且比jQuery更加简单呢。”说得没错,不过CSS的:hover伪类只限于改变CSS样式,而对于更复杂的操作就没法了。请看下面的例子。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> h3 { height:40px; line-height:40px; text-align:center; background-color:#ddd; cursor:pointer; } div { display:none;/*设置默认情况下内容不显示*/ padding:10px; border:1px solid silver; text-indent:32px; } </style> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("h3").hover(function(){ $("div").css("display", "block"); }, function(){ $("div").css("display", "none"); }) }) </script> </head> <body> <h3>绿叶学习网</h3> <div>绿叶学习网成立于2015年4月1日,是一个最富有活力的Web技术学习网站。在这里,我们只提供互联网最好的Web技术教程和最佳的学习体验。每一个教程、每一篇文章、甚至每一个知识点,都体现绿叶精品的态度。没有最好,但是我们可以做到更好!</div> </body> </html>

默认情况下,预览效果如图所示。

当鼠标移到标题上时,预览效果如图所示。

分析:

像上面这种操作,使用CSS的:hover伪类就无法实现了