2011-12-07 134 views
0

3秒后...提示提示不显示。我究竟做错了什么?jQuery延迟三秒后不工作

$(function() { 
    $("#test").live("click",function() { 
     $("#test2").delay(3000, function({ 
      alert('Hello!'); 
     })); 
     }); 
    }); 
+3

我讨厌这样说,但RTFD,你会看到'.delay()'根本没有这样的工作:http://api.jquery.com/delay –

+0

@weka:即使你使用'.delay()'是正确的,你的语法被破坏了。这部分无效:'function({alert('Hello!');})' – RightSaidFred

回答

5

.delay()不接受回调。使用setTimeout

$(function() { 
    $("#test").live("click",function() { 
     setTimeout(function() { alert('Hello!'); }, 3000); 
    }); 
}); 

我可以告诉你你怎么可以技术上使其与.delay()工作,但鉴于您的例子,它只是是不恰当的。

0

我相信jQuery延迟是用来延迟下一个链接函数调用。您应该使用setTimeout代替

$("#test").live("click",function() { 
    setTimeout(function(){ 
     alert('Hello!'); 
    }, 3000); 
});
0

.delay()只适用于使用动画队列像fadeIn() jQuery效果的方法,等等。而且,.delay()不接受回调。

你将不得不使用setTimeout()这样的:

$(function() { 
    $("#test").live("click",function() { 
     setTimeout(function() { 
      alert('Hello!'); 
     }, 3000); 
    }); 
}); 
2

这种例子并不记载,delay()接受这种形式的参数。

$(function() { 
    $("#test").live("click", function() { 
     setTimeout(function() { 
      alert('Hello!'); 
     }, 3000); 
    }); 
}); 

事实上,delay()文档中,有大胆声明;

.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它不提供取消延迟的方法.delay()不是JavaScript本地setTimeout函数的替代品,这对于某些用例可能更合适。

+0

+1包含文档链接和最相关的部分。 – RightSaidFred