【问题标题】:Tooltip submenu links giving weird URLs提供奇怪 URL 的工具提示子菜单链接
【发布时间】:2012-07-03 16:30:03
【问题描述】:

我有一个使用 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 的行有关?这个错误 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;     
    });

对问题有帮助吗?

【问题讨论】:

  • 在您的点击处理程序中,它获取 href 并在其前面放置一个 # 并将其设置为哈希值。所以你得到的结果是正确的。如果要包含照片,则需要先获取该哈希,然后以正确的顺序附加它。也许像 window.location.hash = page + "#" + originalHash;
  • 你能给我一个如何做到这一点的例子吗?我有点大致了解,但如果我看到一个例子会有所帮助。

标签: php jquery html css ajax


【解决方案1】:

要查看原始哈希,您可以执行类似的操作

// 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; 

如果您尝试过,但它不起作用,请确保您编辑问题并发布您的最新代码

【讨论】:

  • 我意识到上面代码的另一个问题是我的 jquery 样式 ajax 页面加载。我拥有的子菜单喜欢链接到 GET 变量的子菜单。当我单击它时,jquery 会将页面重定向到 GET 变量的名称 + .php。由于此页面不存在,因此没有加载任何内容。现在的问题是我想留在主菜单照片页面上,而子页面只是在 url 中添加 GET 变量,因此主照片页面会随着 get 变量的变化而变化。因此在照片页面上有这样的代码:'if ($_GET['com'] == 'viewall') { //do something }'
  • 你应该发布另一个问题,因为我对 PHP 不太熟悉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多