0

当我输入 url 值时我不能,所以标题不会改变并且第一个内容不会隐藏如何使用 enter 与 url 更改标题并隐藏第一页内容?

<script type="text/javascript">
    $(function() {
    var pagecontent = $(".page_content");
    var pages = $("ul.pages li,#logo");
    var hash = window.location.hash;
    var title = document.title;

    pagecontent.not(hash).hide();
    pages.first().addClass("active").show();
    pagecontent.first().show();
    pages.find('[href=' + hash + ']').addClass('active');
    pages.find('[href=' + hash + ']').parent().closest('li').addClass('active');

    pages.click(function() {
        $(this).addClass('active').siblings().removeClass('active');
        $(this).parent().closest('li').addClass('active').siblings().removeClass('active'); 
        pagecontent.hide();
        var activepage = $(this).find("a").attr("href");

        $(activepage).fadeIn();
        title = $('h2', activepage).first().text();   
        $('title').text(title);
        return false;
    });
});
</script>

当我尝试输入 url 时,标题和 pagecontent.first 保持不变

4

1 回答 1

0

固定的。这里是:

$(function() {
    var pagecontent = $(".page_content");
    var pages = $("ul.pages li,#logo");
    var hash = window.location.hash || "#home";
    var title = document.title;

    // new block
    var titlex = $('h2', hash).first().text();
    document.title = titlex;
    $(hash).show();

    $('ul.pages a[href="' + hash + '"]')
        .addClass("active")
        .closest("li")
            .addClass("active");
    // end

    pagecontent.not(hash).hide();
    pages.click(function() {
        $(this).addClass('active').siblings().removeClass('active');
        $(this).parent().closest('li').addClass('active').siblings().removeClass('active'); 
        pagecontent.hide();
        var activepage = $(this).find("a").attr("href");
        window.location.hash = activepage;  //new: fix location hash
        $(activepage).fadeIn();
        title = $('h2', activepage).first().text();   
         $('title').text(title);
        return false;
    });
});

我们可以讨论这种风格,但这很有效。

编辑:请注意,click处理程序设置适当的位置哈希。似乎是正确的决定,但它会导致浏览器标题栏中的闪烁。如果它困扰您,请尝试更换

window.location.hash = activepage;
$('title').text(title);

if( history.pushState ) {
    history.replaceState({}, title, activepage);
} else {
    window.location.hash = activepage;
    document.title = title;
}
于 2012-09-30T21:44:11.620 回答