在實際的開發過程中,我們可能會遇到這種需求,如下圖
左邊是三個tab欄,右邊是顯示內容的div,當鼠標滑到坐標的tab上時,給它一個高亮顯示,讓它對應的內容在右邊的div中顯示出來,當鼠標移出的時候把tab欄上的高亮顯示去掉,右邊的內容也隱藏掉,這就是普通的tab切換。現在需求是這樣,當鼠標從左邊的tab欄移出,而且沒有移進右邊的div區域,讓它的效果消失,但當鼠標從左邊的tab欄移出,移進了右邊的div區域,保持效果,當鼠標從右邊的div區域移出的時候再取消效果。
大體思路是這樣的,當鼠標從左側的tab欄移出的時候給它加一個定時器setTimeout,讓這個效果過0.5秒消失,如果在這個時間內鼠標移動到了右側的div區域,取消定時器,當鼠標從右側的div區域離開時,再加上定時器。話不多說了,直接上代碼。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .main { width: 300px; height: 800px; float: left; } .main > div { width: 300px; height: 100px; margin-top: 50px; border: 1px solid red; } .main > div.current { background-color: deeppink; } .main2 { width: 400px; height: 400px; border: 1px solid #3C3C3C; float: left; margin-left: 100px; margin-top: 50px; } .main2 > div { width: 800px; height: 800px; display: none; } .main2 > div.active { display: block; } </style> </head> <body> <div class="main"> <div class="current"></div> <div></div> <div></div> </div> <div class="main2"> <div class="active">111</div> <div>222</div> <div>333</div> </div> <script src="jquery-1.11.0.min.js"></script> <script> $(function(){ var timer = null; $('.main div').each(function(index){ $('.main div').eq(index).on('mouseenter',function(){ $(this).addClass("current"); $('.main2 div').eq(index).addClass("active"); }) $('.main div').eq(index).on('mouseleave',function(){ timer = setTimeout(function(){ $(".main div").eq(index).removeClass("current"); $('.main2 div').eq(index).removeClass("active"); },500); }) $('.main2 div').eq(index).on('mouseenter',function(){ clearTimeout(timer); }) $('.main2 div').eq(index).on('mouseleave',function(){ $(".main div").eq(index).removeClass("current"); $('.main2 div').eq(index).removeClass("active"); }) }) }) </script> </body> </html>