2014-05-08 40 views
0

我知道有很多關於這個問題的問題,但我不能讓它與我的腳本一起工作。拖延mouseenter功能

我想延遲一秒鐘的懸停效果,這樣當您將鼠標指針移動到屏幕上時,我的按鈕不會左右搖晃。

我試過的setTimeout是這樣的:

$("#picnav ul li a").mouseenter(function() { 

    setTimeout(function() { 

     $(this).animate({ 
     'padding-top' : 191, 
     'padding-right' : 0, 
     'padding-bottom' : 60, 
     'padding-left' : 0 
     }, '3000', "easeInOutQuint"); 

    }, 500); 

    }).mouseleave(function() { 
     $(this).animate({ 
     'padding-top' : 60, 
     'padding-right' : 0, 
     'padding-bottom' : 191, 
     'padding-left' : 0, 
     }, '3000', "easeInOutQuint"); 
}); 

,但我不斷收到消息「無法使用‘的’操作符來搜索未定義‘paddingTop’」

缺少什麼我在這裏?

如果你想檢查站點出來,你可以這樣做here

+0

請張貼相關代碼的[JSFiddle](http://jsfiddle.net)。 (這包括HTML,JavaScript和CSS)。 – Albzi

+0

'this'不是你認爲的那樣...你需要使用一個封閉的 –

回答

3

$(this)裏面的setTimeout不會指實際的元素

你可以把它像這樣工作 -

$("#picnav ul li a").mouseenter(function() { 
    var $this = $(this); 
    setTimeout(function() { 
     $this.animate({ 
+0

這使得延遲激活,這是很好的!但是我不想讓函數執行,除非你把指針放在對象上500ms。 – user2906953

+0

@ user2906953您必須清除mouseleave中的超時 –

+0

我該怎麼做到這一點? – user2906953