开发者

Ajaxify hyperlink so on success will load content otherwise redirect as default

I have a <a href> hyperlink. I used JQuery so clicking the link will load contents into a div in the current page (i.e. stay in the same page), and it works now.

However I also want that, if the request fails, the link act normally and go to the href url.

I tried e.preventDefault(); and return false; in the success: callback function, but they are not in the correct scope. If I place e.preventDefault() in the calling function, I can't reverse that effect later.

Here is my co开发者_JAVA百科de:

$('a.more-link').click(function(e){
    var postId=$(this).closest('div.post').attr("id").replace(/^post-(.*)$/,'$1');
    var postContent=$(this).parent();
    $.ajax({
        url:"?action=ajax_load_post&id="+postId,
        success:function(data){
            postContent.html(data);
            // Can't access e.preventDefault, nor return false;
        },
        error:function(data){

        }
    });
    e.preventDefault();
});


Don't worry about the preventDefault(), just redirect the user in the error function like this:

$('a.more-link').click(function(e){
    var postId=$(this).closest('div.post').attr("id").replace(/^post-(.*)$/,'$1');
    var postContent=$(this).parent();
    var _this = $(this);
    $.ajax({
        url:"?action=ajax_load_post&id="+postId,
        success:function(data){
            postContent.html(data);
        },
        error:function(data){
            window.location = _this.attr('href');
            return false;
        }
    });
});
0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜