如何为用javascript加载的内容添加书签

时间:2011-02-03 02:26:39

标签: php javascript jquery html

我在页面上有一个div,它应该包含内容和一些我用来加载哪些内容的链接。

<div id="thecontent">
</div>

<div id="callers">
 <div class="caller">1234</div>
 <div class="caller">15</div>
 <div class="caller">9</div>
 <div class="caller">324</div>
</div

我使用jquery监视何时单击.caller,然后我从数据库中获取记录并将其显示在#thecontent中。

如何更改网址以反映正在查看的记录。我的意思是一个看起来像这样的网址。我需要在html标记或jquery中做些什么来实现这一点吗?

http://site.com/#1234

4 个答案:

答案 0 :(得分:2)

您有两种选择:

选项1

使“调用者”菜单使用<a href="#1234">1234</a>等实际锚元素。添加click事件处理程序以拦截并执行XHR提取。

选项2

click处理程序上,将window.location.hash设置为目标。

对于这两个选项: 加载页面时,请检查window.location.hash的值以查看它是否附带目标,并在指定目标时获取该目标。

答案 1 :(得分:2)

首先要设置哈希值,可以使用

window.location.hash = '1234';

您还可以在使用以下页面加载页面时读取此值:

window.location.hash.substr(1); // .hash also returns the '#' character, so use substr to remove it

考虑到这一点,您可以在.ready()

中执行此操作
$(function() {
  var hash = window.location.hash.substr(1);
  if(hash != '') {
    $('#callers .caller:contains('+hash+')').click();
  }
});

.caller click()函数中,您还需要更新哈希值。

答案 2 :(得分:0)

调用者选择器中的

location.href = '#'+$(this).html();

答案 3 :(得分:0)

查看http://www.20thingsilearned.com/,历史记录{j}的javascript应该能为您提供所需的一切。

它使用现代历史管理调用pushstate()等,如果它们可用,或者使用哈希标记更新href,并检查所述主题标签是否存在以确定应显示哪些内容。这真的很好。