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

时间:2013-03-11 21:21:50

标签: javascript jquery html css css3

我有一个定时器功能无法正常工作的问题,任何人都可以说明为什么会出现这种情况?我确定这很简单,但不确定它是什么。

<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 个答案:

答案 0 :(得分:2)

您需要将JS包装在匿名函数中执行。另外,setTimeout()会更改this的值(对here的说明),因此请务必将this分配给hover()函数中的新变量,并将其用作.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