工具提示子菜单链接提供奇怪的URL

时间:2012-07-03 16:30:04

标签: php jquery html css ajax

我有一个使用jquery ajax加载所有页面的网站。基本上就像<a href="photos">photos</a>一样。然后jquery选择它并转到正确的文件夹并在末尾添加.php并将该文件加载到内容窗口中。然后它放置href属性(在这种情况下是照片)并将#current_pg_attr放在url的末尾,所以如果内容窗口显示照片页面,它就像www.mysite.com/#photos。同样在我的主菜单之一中,我有一个仅在悬停时显示的子菜单:

<ul id="main_nav"><br />
    <li><a href="home">home</a></li><br />
    <li><a href="photos">photos</a><br />
        <div id="menu2_submenu_tooltip"><a href="?com=viewall">view all stuff</a></div><br />
    </li><br />
</ul>

现在,单击子菜单时出现问题。就像我点击查看所有内容一样,我需要 www.mysite.com /#?com = viewall 而不是 www.mysite.com/?com=viewall#photos 。我究竟做错了什么?我认为这与在url中添加jquery #somthing的行有关吗?这个错误的网址不是问题,因为我可以通过获取GET变量并加载该页面来解决它,但我仍然想尝试使其正确。顺便说一句,这是我的ajax jquery代码的一部分:

var curr_page_hash = window.location.hash;
    $('#main_center').load('content/' + curr_page_hash.substr(1) + '.php');
    window.location.hash = curr_page_hash;
    $('#left_nav ul li a').click(function() {
    var page = $(this).attr('href');
    $('#main_center').html('<div id="load_img"><img src="template/img/loading.gif" alt="Loading..." /></div>');
    $('#main_center').load('content/' + page + '.php');
    window.location.hash = '#' + page; 
            return false;     
    });

有关问题的任何帮助吗?

1 个答案:

答案 0 :(得分:0)

要查找原始哈希,您可以执行类似

的操作
// note I am not sure what window.location.hash returns if there is no hash but you should test that first to make this more efficient
var t = window.location;
var originalHash = "";
if(t.indexOf("#") > -1) {
   // grab the hash
   originalHash = window.location.hash;
}

这样就可以处理原始哈希,现在要设置新页面,你可以按原样保留代码并在最后执行此操作

// don't need to add # because it is in originalHash already, it is safe to add originalHash because if there is no # in URL then it will be empty string
window.location.hash = page + originalHash; 

如果你尝试了这个并且它不起作用,请确保编辑问题并发布最新代码