代码之家  ›  专栏  ›  技术社区  ›  Elle H

jquery地址插件-内容被替换时不工作

  •  0
  • Elle H  · 技术社区  · 16 年前

    我一直在使用jquery地址插件来启用后退按钮支持,除了当链接在Ajax内容区域时,它一直在工作。例如

    <div id="content">
      <a href="example.html" rel="address:example.html" onclick="ajaxLoad(this);">link</a>
    </div>
    

    其中Ajaxload取代了 content 内容为 example.html . 当我尝试这样做时,地址栏不会改变,后退按钮只会转到内容区域外链接的最后一个实例。

    有什么方法可以让这个工作吗?

    编辑:

    插件: http://www.asual.com/jquery/address/

    Ajaxload函数示例:

    function ajaxLoad(obj)
    {
        $.get(obj, function(data)
        {   
            $("#main").html(data);
        }); 
        return false;
    }
    
    1 回复  |  直到 13 年前
        1
  •  0
  •   Elle H    16 年前

    我使用上下文敏感的window.location解决了这个问题。

    修改后的Ajaxload:

    function ajaxLoad(obj, inline)
    {
        if(!inline)
            window.location='#/'+obj.rel.substring(8);
        else
        {
            $.get(obj, function(data)
            {   
                $("#main").html(data);
            });
        }
        return false;
    }
    

    然后是初始页面加载的处理程序,当使用后退/前进按钮时:

    $.address.externalChange(function(event)
    {
        var url = event.value.substring(1); //strips the leading slash
        if(url == "")
            url = 'index.php';
        loadPage(url, true);
    });
    

    我不知道这是不是最好的方法,但它奏效了。