代码之家  ›  专栏  ›  技术社区  ›  Teej

使用jquery延迟页面的重新加载

  •  1
  • Teej  · 技术社区  · 14 年前

    我需要推迟重新加载页面。现在,我有这个:

    $('div.navigation_sorter ul li a.delete').click(function(event){
                    event.preventDefault();
                    var li = $(this).closest('li');
                    $.post('<?php echo site_url('admin/navigation/delete_link');?>', { link: li.attr('id')}, function(data){
                        $('<div class="feedback info"><p>'+ data +' has been deleted</p></div>').insertAfter('.navigation_sorter').delay(800);
                        window.location = '<?php echo current_url();?>';
                    });
                });
    

    这显然不起作用。有人知道如何将重新加载延迟至少3秒左右吗?

    4 回复  |  直到 9 年前
        1
  •  15
  •   Ikke    14 年前

    使用 setTimeout 在一段时间后执行一个函数:

    $('div.navigation_sorter ul li a.delete').click(function(event){
                    event.preventDefault();
                    var li = $(this).closest('li');
                    $.post('<?php echo site_url('admin/navigation/delete_link');?>', { link: li.attr('id')}, function(data){
                        $('<div class="feedback info"><p>'+ data +' has been deleted</p></div>').insertAfter('.navigation_sorter')
                        setTimeout(function(){
                             window.location = '<?php echo current_url();?>';
                        }, 3000);               
                    });
                });
    
        2
  •  3
  •   Ed James    14 年前

    jquery.delay方法仅用于延迟函数链,您要使用setTimeout():

    $('div.navigation_sorter ul li a.delete').click(function(event){
                    event.preventDefault();
                    var li = $(this).closest('li');
                    $.post('<?php echo site_url('admin/navigation/delete_link');?>', { link: li.attr('id')}, function(data){
                        $('<div class="feedback info"><p>'+ data +' has been deleted</p></div>').insertAfter('.navigation_sorter');
                        setTimeout('reload()', 800);
                    });
                });

    函数reload()。{ window.location='<?php echo current_url();?“;” }

        3
  •  1
  •   Artem Barger    14 年前

    setTimeout 应该做这个工作,

       $('div.navigation_sorter ul li a.delete').click(function(event)
        {
            event.preventDefault();
            var li = $(this).closest('li');
            $.post('<?php echo site_url('admin/navigation/delete_link');?>', 
                    { 
                      link: li.attr('id')
                    }, function(data)
                     {
                        $('<div class="feedback info"><p>'+ data +' has been deleted</p>' +
                          '</div>').insertAfter('.navigation_sorter').delay(800);
    
                            setTimeout( function() 
                            {
                              window.location = '<?php echo current_url();?>';
                            }, 3000);
                        });
                    });
    
        4
  •  0
  •   Frithir.com    9 年前

    试试这个,保存混合的php和jquery, "." 重新加载当前页。

    setTimeout(window.location = ".", 600);