在之前的學習,我們知道,鼠標移入和鼠標移出這2個事件往往都是同時使用的,因此我們必須分別對“鼠標移入”和“鼠標移出”這2個事件分別定義。但是在jQuery中,我們可以使用hover()方法一次性地定義這2個事件,這就是所謂的合成事件。
語法:
$().hover(fn1,fn2)
說明:
參數fn1表示“鼠標移入”時觸發的事件處理函數,參數fn2表示“鼠標移出”時觸發的事件處理函數。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style type="text/css"> #wrapper { display:inline-block; width:300px; } *{padding:0;margin:0;} h3 { height:40px; line-height:40px; border:1px solid gray; border-bottom:none; background-color:Silver; text-align:center; cursor:pointer; } #content { padding:10px; border:1px solid gray; text-indent:30px; display:none;/*設置默認情況下內容不顯示*/ } </style> <script type="text/javascript" src="../App_js/jquery-1.12.0.min.js"></script> <script type="text/javascript"> $(function () { $("h3").hover(function () { $("#content").css("display","block"); }, function () { $("#content").css("display", "none"); }); }) </script> </head> <body> <div id="wrapper"> <h3> 學習網</h3> <div id="content"> 學習網成立於2015年4月1日,是一個富有活力的技術學習網站。 學習網為廣大網絡工作者(網頁開發人員、站長等)提供各種精品教程以及最精華資料。 學習網跟其他垃圾采集站不一樣, 學習網中的每一個課程、每一篇文章,甚至每一個知識點,都凝聚了本人的最辛勤的汗水。多少日日夜夜,本人嘔心瀝血在一遍一遍地編輯,為的是給廣大網站愛好者提供最精華的知識。</div> </div> </body> </html>
在浏覽器預覽效果如下:
當鼠標移動到標題上面時,預覽效果如下:
分析:
在CSS偽類選擇器中,我們可以使用:hover偽類來定義鼠標移入移出某個元素時的CSS樣式的改變,但是這只限於CSS樣式改變,像上面這個例子那種操作就不能實現了。
hover()方法,准確來說是替代jQuery中的mouseenter()和mouseleave(),而不是替代mouseover()和mouseout()。
初學jQuery的朋友們對於hover()這種寫法感覺很陌生,有時候也記不住。其實hover()這個方法,無非就是插入了2個function函數罷了。我們每次使用合成事件的時候,先把形式寫出來,如下:
$("#wrapper").hover(function () { }, function () { })
然後再編寫兩個function(){}中的內容,這樣就不會導致書寫錯誤了:
$("#wrapper").hover(function () { //第1個function的內容 }, function () { //第2個function的內容 })
此外,我們還會看到有些書或者教程講解合成事件時提到,除了hover()之外還有一個toggle()。其實在新版本的jQuery中,toggle()用於合成事件的做法已經被移除了。當然,toggle()還被保留下來,用於切換元素的顯示狀態。我們在“jQuery顯示和隱藏”這一節會詳細給大家講解。