为什么我的设置超时不起作用?

问题描述:

我有一个计时器功能不工作的问题任何人都可以指出为什么这可能是这种情况?我确定这是简单的,但不知道它是什么。为什么我的设置超时不起作用?

<a class="item"></a> 
<div class="item"></div> 
<div class="item"></div> 
<div class="item"></div> 
<div class="item"></div> 

.item {width:50px; height:50px; background:red; margin:10px; float:left; opacity:1; } 


$("document").ready(function() { 
    var tooltipTimeout; 

    $(".item").hover(function() { 
    tooltipTimeout = setTimeout($(".item").not(this).stop().fadeTo("slow", 0.5), 2000); 
    }, 
    function() { 
     $(".item").stop().fadeTo("slow", 1); 
    }); 


}); 

谢谢。

看到http://jsfiddle.net/Jrand/wqJMt/1/

+1

您没有将函数传递给'setTimeout'。 https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout – 2013-03-11 21:23:18

您需要包裹JS在匿名函数来执行。此外,setTimeout()将改变this(上here解释)的值,所以请确保您的hover()函数中分配this到一个新的变量,并使用它作为您的.not()的说法相反:

$(".item").hover(function() { 
    var item = this; 
    tooltipTimeout = setTimeout(function() { $(".item").not(item).stop().fadeTo("slow", 0.5) }, 2000); 
}, 
function() { 
    $(".item").stop().fadeTo("slow", 1); 
}); 

DEMO