今天遇到一個十分蛋疼的問題,花了我一個多小時才解決,其實十分簡單,但我是新手,好了,事情是這樣的: 我想讓滑鼠停留在某個元素一定時間再顯示它隱藏的內容(不然你滑鼠快速滑上滑下,反反覆復,如果碰上slideDown(),會讓電腦反應不過來的),剛開始代碼如下: var tid = 0; $( ".he ...
今天遇到一個十分蛋疼的問題,花了我一個多小時才解決,其實十分簡單,但我是新手,好了,事情是這樣的:
我想讓滑鼠停留在某個元素一定時間再顯示它隱藏的內容(不然你滑鼠快速滑上滑下,反反覆復,如果碰上slideDown(),會讓電腦反應不過來的),剛開始代碼如下:
var tid = 0;
$( ".header_middle ul li" ).hover( function() {
tid = setTimeout( function() {
$(".hm_con_1 ").slideDown(250);
var $t=$(this);
var $t_index=$t.index();
$(".hm_con_1 ul ").hide().eq($t_index).show();
}, 100 );
}, function() {
clearTimeout( tid );//當在1秒內退出了hover事件就取消計時代碼
} );
$(".content1").mouseover(function () {
$(".hm_con_1").slideUp(250);
})
$(".header,.menu,.top").mouseover(function (e) {
if ($(e.target).closest(".header_middle ul li").length === 0) {
$(".hm_con_1").slideUp(250);
}
})
View Code
但結果是this一直獲取不到滑鼠hover的元素的值,$t_index返回的都是-1,最後才反現
原生態函數中使用jQuery中的 $(this)無效(好吧,我也不知道什麼是原生態函數),
所以,
只能把var $t=$(this);拿到外面去定義了
var tid = 0;
$( ".header_middle ul li" ).hover( function() {
var $t=$(this);
tid = setTimeout( function() {
$(".hm_con_1 ").slideDown(250);
var $t_index=$t.index();
$(".hm_con_1 ul ").hide().eq($t_index).show();
}, 100 );
}, function() {
clearTimeout( tid );//當在1秒內退出了hover事件就取消計時代碼
} );
$(".content1").mouseover(function () {
$(".hm_con_1").slideUp(250);
})
$(".header,.menu,.top").mouseover(function (e) {
if ($(e.target).closest(".header_middle ul li").length === 0) {
$(".hm_con_1").slideUp(250);
}
})