开发者

Delaying the reload of a page using jQuery

I need to delaying the reloading of the page. Right now, I have this:

$('div.navigation_sorter ul li a.delete').click(function(event){
                event.preventDefault();
                var li = $(this).closest('li');
                $.post('<?ph开发者_JAVA技巧p 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();?>';
                });
            });

This obviously doesn't work. Anyone have an idea how to delay the reloading for atleast 3 seconds or so?


Use setTimeout to execute a function after a certain period:

$('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);               
                });
            });


The jQuery .delay method is only for delaying function chains, you want to use 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);
                });
            });

function reload() { window.location = '<?php echo current_url();?>'; }


setTimeout should do the job,

   $('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);
                    });
                });


Try this one, saves mixing php and jQuery, the "." reloads the current page.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜