我遇到了使用jQuery的.delay()方法(v 1.4.2)尝试延迟以下.load()方法的问题。
像这样:
$('myElement').delay(500).load('myPage.php');
似乎只是忽略.delay()。
我甚至想出了一个像这样的解决方法:
setTimeout(function(){
$('myElement').load('myPage.php');
}, 500);
但是,那并不那么优雅。其他人遇到这个并找到了更好的解决方案吗?
感谢。
答案 0 :(得分:14)
是的,delay()
(docs)方法将被忽略,因为load()
(docs)方法不会自动排队。
setTimeout
可能是您的最佳选择,但如果您使用queue()
(docs)方法将.delay()
调用添加到队列,则可以通过load()
从技术上完成此操作。< / p>
$('myElement').delay(500).queue(function( nxt ) {
$(this).load('myPage.php');
nxt();
});
该功能已添加到队列中。然后,您需要调用函数的参数以释放队列。有一种称为dequeue()
(docs)方法的方法也可以实现这一点。
答案 1 :(得分:3)
如果您使用jQuery timers插件,则可以
$('myElement').oneTime(500, function() {
$(this).load('myPage.php');
});
答案 2 :(得分:3)
这是我解决淡出div,然后将新内容加载到其中,然后将其淡入的解决方案。例如,这对于加载搜索结果的AJAX调用非常有用。
$('.search').keyup(function(){
var query= $(this).val();
$('.results').fadeOut('300');
setTimeout(function(){
$('.results').load('search.php?search=' + query, function() {
$('.results').fadeIn('300');
})
}, 300);
return false;
});