jQuery地址 - 深层链接和状态

时间:2011-06-21 23:57:12

标签: jquery ajax deep-linking

我对AJAX很新,目前正在学习如何在演示网站上实现jQuery Address,以便我可以将其移植到我正在处理的个人项目中。

虽然我可以通过超链接加载所需内容以及修改URL哈希,但如果我直接在浏览器栏中输入URL哈希,我将无法导航到特定状态。

目前的代码是这样的:

$("h2.entry-title a").live('click', function(event) {
    event.preventDefault();
    $("#content").fadeOut("slow").load($(this).attr("href")+" #content > *", function() {
        $.address.value("?page=entry");
    }).fadeIn("slow");
});

我尝试寻找有关使用jQuery Address实现深层链接的教程和演示,但到目前为止它没有产生任何结果。

感谢您的帮助:)

p / s:我使用.live()代替.bind()的原因是因为在某些时候会动态插入更多的条目标题。

1 个答案:

答案 0 :(得分:0)

此代码中没有任何内容在您首次加载页面时读取URL。如果您在地址栏中输入“http://test.com/test.html?page=entry”,则需要在页面加载时加载内容,手动更改哈希值以及单击事件。

http://abishaigray.com/jquery.address.php

$(function() {
    var content = $("#content");
    var loadUrl = function(url) {
        content.fadeOut("slow", function() {
            content.load(url + " #content > *", function() {
                    content.fadeIn("slow");
                });
        });
    };
    $("a.loadUrl").live('click', function(event) {
        event.preventDefault();
        $.address.parameter("page", $(this).attr("href"));
    });
    $.address.change(function(vars) {
        var page = $.address.parameter("page");
        if (page) { loadUrl(page); }
    });
});

我利用了$.address.change事件。这样,无论何时更新网址或用户第一次到达时,都会重新加载内容。