2013-08-22 72 views
-1

嗨我想在這個懸停上實現一個函數setTimout。 http://jsfiddle.net/u3pW8/33/setTimeout on Hover功能

$(function() { 
    $("#moving .wrapper").mousemove(function (e) { 
     var parentOffset = $(this).parent().offset(); 
     var relX = e.pageX - parentOffset.left; 
     $(this).children(".hidden-content").css("left", relX); 
    }); 

    $("#static .wrapper").hover(function (e) { 
     var parentOffset = $(this).parent().offset(); 
     var relX = e.pageX - parentOffset.left; 
     $(this).children(".hidden-content").css("left", relX); 
    }); 
}); 

我覺得我有一個帶參數的問題,原因coordonates被重新評估每一個鼠標移動

+2

你到底想幹什麼?由於這是一個事件處理程序,它會根據上次懸停事件顯示隱藏部分,其中e.pageX每次都可能不同。 –

+0

你在問什麼?你的小提琴只有一個功能,你想要什麼超時時間? –

+0

你的目標是什麼?你想得到什麼結果?請改善您的問題,因爲目前尚不清楚。 –

回答

0

懸停工作在兩階段

$("#static .wrapper").hover(function (e) { 
    // first stage it is wok on mouseover 
}, function (e) { 
    // second stage it is wok on mouseout 
}); 

現在還能用自己setimeout在這根據您的要求 參考HOVER

0

您需要設置超時onmouseenter並把代碼,實際的顯示和位置隱藏的內容到一個單獨的功能:

(function() { 
    var delay = 400, 
     timeout; 

    function showChild(posLeft) { 
     $(this).children(".hidden-content").css('left', posLeft).show(); 
    } 

    $("#static .wrapper").mouseenter(function (e) { 
     var that = this,  
      event = e; 

     if (timeout) { 
      clearTimeout(timeout); 
     } 
     timout = setTimeout(function() { 
      var parentOffset = $(that).parent().offset(); 
      var relX = event.pageX - parentOffset.left; 
      showChild.call(that, relX); 
     }, delay); 
    }).mouseleave(function() { 
     if (timeout) { 
      clearTimeout(timeout); 
     } 
     $(this).children(".hidden-content").hide(); 
    }); 
}()); 

Fiddle

+0

thxxxxx很多! – user2706463

+0

如果我的答案解決了問題,則應將其標記爲「正確」。 – jukempff