jQuery 地址插件 - 内容替换时不起作用

发布于 2024-09-08 14:13:56 字数 697 浏览 0 评论 0原文

我一直在使用 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/地址/

ajaxLoad 函数示例:

function ajaxLoad(obj)
{
    $.get(obj, function(data)
    {   
        $("#main").html(data);
    }); 
    return false;
}

I've been using the jQuery address plugin to enable back-button support, which has been working except for when the link is in the AJAX content area. For example

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

where ajaxLoad replaces content with the content of example.html. When I try to do this, the address bar does not change, and the back button just goes to the last instance of a link outside the content area.

Is there a way to make this work?

EDIT:

Plugin: http://www.asual.com/jquery/address/

Example ajaxLoad function:

function ajaxLoad(obj)
{
    $.get(obj, function(data)
    {   
        $("#main").html(data);
    }); 
    return false;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

○愚か者の日 2024-09-15 14:13:56

我使用上下文相关的 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);
});

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

I solved this using context-sensitive window.location.

Modified ajaxLoad:

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

And then the handler for the initial page load, and when the back/forward buttons are used:

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

I don't know if this is the best method, but it works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文