0

我正在使用脚本来执行从页面到页面的 ajax 调用,我无法理解的是为什么每个 href 单击浏览器当前位置更改为 www.blabla/#index 看看下面的代码,我的目标是将当前位置更改为没有“#”的东西 -www.blabla/index

$("document").ready(function() {

var hash = window.location.hash.substr(1);
var href = $('#tabs-bar li a').each(function(){
    var href = $(this).attr('href');
    if(hash==href.substr(0,href.length-5)){
        var toLoad = hash+'.html #content';
        $('#content').load(toLoad)
    }                                           
});

$('#tabs-bar li a').click(function(){

    var toLoad = $(this).attr('href')+' #content';
    /// $('#content').fadeOut('100');
    $('#content').empty();
    $('#load').remove();
    $('#profile-cv').addClass("loading");
    //$('#content').append('<div class="loading"></div>');

    setTimeout(function () { loadContent(); }, 1000);

    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);

    function loadContent() {
        $('#profile-cv').load(toLoad,showNewContent())
    }
    function showNewContent() {
        $('#profile-cv').append(hideLoader());
    }
    function hideLoader() {
        $('#profile-cv').removeClass("loading");

    }
    return false;

});

});
4

2 回答 2

0

你正在设置

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);

location.hash总是添加“#”。

查看PJAX 库,这样就可以修改 url。

更新

该库使用新的 HTML5 history.pushStateAPI。不幸的是,它在任何 IE 中都不起作用,除了 IE 10。

这个不错的教程应该可以帮助您实现它。

如果您需要旧浏览器的后备解决方案,您可以使用PJAXhistory.js等库。

于 2012-11-01T12:14:56.823 回答
0

您需要停止执行事件的默认操作。

用于e.preventDefault();实现这一点 -e是回调函数的第一个参数:

$('#tabs-bar li a').click(function(e) {
    e.preventDefault();
    var toLoad = $(this).attr('href') + ' #content';
    ...
});
于 2012-11-01T11:31:32.010 回答