北城已荒凉 2011-01-09 18:45 采纳率: 0%
浏览 36

将历史记录添加到jQuery ajax

I can't figure out how to add the history plugin functionality to my (really simple) ajax code.

Here's my code so far:

$(function() {

    $.ajaxSetup({ cache: true });
    var hijax = $('ul.hijax a');
    var loader = $('<div id="spinner"></div>');
    hijax.click(function(e){
      hijax.removeClass('ajax-on');
        $(this).addClass('ajax-on');
        var url = $(this).attr('href') + ' #biog-container';
        $("#ajax-container").html(loader).load(url);
        e.preventDefault();
    });
});

This pulls the contents of the the linked page containing a div with an id of 'biog-containers' (The is a list of names with links to peoples' biographies - it's a site for a baroque orchestra!).

The ajax calls works great (yay jQuery!), but I've googled and googled about adding support for the history plugin and (stupid front-end guy that I am) I just can't figure it out.

Thanks for the help.

  • 写回答

1条回答 默认 最新

  • weixin_33674437 2011-01-10 04:35
    关注

    You can create a global array, holding the items clicked though the script. Push the elements at each click, but have present the last item WON'T be return item.

    At a return point, check if your array has more than one item, pull one item and discard it (that item represents the current page), pull another item and trigger a click over it.

    This code is not tested!:

    $(function() {
        var links = new Array(),
        hijax = $('ul.hijax a'),
        loader = $('<div id="spinner"></div>'),
        container = $('#ajax-container'),
        content = container.html();
    
        $.ajaxSetup({ cache: true });
    
        hijax.click(function(e){
            var $this = $(this),
            url = $this.attr('href') + ' #biog-container';
    
            e.preventDefault();
            links.push($this);
    
            hijax.removeClass('ajax-on');
            $this.addClass('ajax-on');
            container.html(loader).load(url);
        });
    
        $('#back-button').click(function(e){
            var link;
            e.preventDefault();
    
            if (links.length > 1) {
                // This represents the current link
                links.pop();
                // This represents the past link
                link = links.pop();
                link.click();
            }
            else {
                // This may be empty, or represent the current content
                links.pop();
                // Show the original content
                container.html(content);
            }
        });
    });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)