2014-05-08 43 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