Jquery setTimeout不起作用

时间:2011-03-19 08:25:41

标签: jquery jquery-ui

我有以下jQuery代码 -

$('div#mid_number_of_mail').mouseover(function () {

    setTimeout(function () {
        $('div.element_popup' ,this).stop().animate({
            opacity : '1'
        }, 250, 'linear', function() { });
    }, 5000);

});

但我不知道为什么它不能正常工作。有人可以帮我这个代码吗?

提前致谢!

2 个答案:

答案 0 :(得分:5)

因为thiswindow而不是具有给定ID的div。

this基于如何调用函数是上下文敏感的。

由于函数是通过setTimout调用的,因此它没有对象上下文,因此使用默认对象:window

您希望this与鼠标悬停功能一样,因此您需要将其副本保存在其他变量中。

$('div#mid_number_of_mail').mouseover(function () {
  var that = this; // Take the this from this context and keep it for other functions
  setTimeout(function () {
                  $('div.element_popup', that).stop().animate({

答案 1 :(得分:2)

尝试使用:

setTimeout( function(ele) {}, 2000, $(this) );

在你的“ele”中,你会引用“$(this)”。