Php 提供奇怪URL的工具提示子菜单链接
我有一个使用jQueryAjax加载所有页面的站点。基本上,它就像Php 提供奇怪URL的工具提示子菜单链接,php,jquery,html,css,ajax,Php,Jquery,Html,Css,Ajax,我有一个使用jQueryAjax加载所有页面的站点。基本上,它就像。然后jquery将其提取并转到正确的文件夹,在末尾添加.php并将该文件加载到内容窗口中。然后它将href属性(在本例中为照片)放在url的末尾,并将#current_pg_attr放在url的末尾,因此如果内容窗口显示的是照片页面,则与www.mysite.com/#photos类似。在我的一个主菜单中,我有一个子菜单,仅在悬停和类似的情况下显示: <ul id="main_nav"><br />
。然后jquery将其提取并转到正确的文件夹,在末尾添加.php并将该文件加载到内容窗口中。然后它将href属性(在本例中为照片)放在url的末尾,并将#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#照片。我做错了什么?我认为这与在url中添加jquery这句话有关?这个错误url不是一个问题,因为我可以通过获取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;
});
var curr\u page\u hash=window.location.hash;
$('#main_center').load('content/'+curr_page_hash.substr(1)+'.php');
window.location.hash=curr\u page\u hash;
$('left#nav ul li a')。单击(函数(){
var page=$(this.attr('href');
$('main#u center').html('');
$('#main_center').load('content/'+page+'.php');
window.location.hash='#'+页面;
返回false;
});
关于这个问题有什么帮助吗?要查看原始哈希,您可以执行以下操作
// 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;
如果您尝试了此操作,但无效,请确保您编辑了问题,并在单击处理程序中发布了最新代码,它会抓取href并在其前面放置一个#,然后将其设置为哈希值。所以你得到的结果是正确的。如果你想把照片包括在内,你需要先抓取这个散列,按正确的顺序附加它。可能类似于window.location.hash=page+“#”+originalHash;你能给我举个例子说明怎么做吗?我大致了解了一下,但是如果我看到一个例子,我会有所帮助。我用上面的代码意识到的另一个问题是jquery风格的ajax页面加载。我拥有的子菜单就像链接到GET变量的子菜单。当我单击它时,jquery将页面重定向到GET变量+.php的名称。由于此页面不存在,因此未加载任何内容。现在的问题是我想停留在主菜单照片页面上,子页面只是在url中添加了GET变量,因此主照片页面会随着GET变量的变化而变化。因此,在照片页面上有这样的代码:“如果($\u GET['com']=='viewall'){//do something}”,你应该发布另一个问题,因为我对PHP不太熟悉