2013-03-11 83 views
0

我有一個計時器功能不工作的問題任何人都可以指出爲什麼這可能是這種情況?我確定這是簡單的,但不知道它是什麼。爲什麼我的設置超時不起作用?

<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

回答

2

您需要包裹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