jQuery - 使用.delay()推迟.load()?

时间:2011-02-03 00:52:52

标签: jquery load delay

我遇到了使用jQuery的.delay()方法(v 1.4.2)尝试延迟以下.load()方法的问题。

像这样:

$('myElement').delay(500).load('myPage.php');

似乎只是忽略.delay()。

我甚至想出了一个像这样的解决方法:

setTimeout(function(){
    $('myElement').load('myPage.php');
}, 500);

但是,那并不那么优雅。其他人遇到这个并找到了更好的解决方案吗?

感谢。

3 个答案:

答案 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;
});