jQuery + Ajax Hash / History等等

我试图在jQuery中使用URL哈希来控制Ajax中的历史记录并使链接/页面可书签。 我已经尝试了几乎所有的插件,我似乎无法正常工作,所以我真的没有任何代码示例。 但我愿意接受任何建议,信息,教程等。

我试图将其中的一个页面的差异在于我有一个jQuery动画驱动的启动/加载页面,这也是所有内容将被加载到的页面。

..在这个链接上,我想绕过所有的启动/加载动画,并根据哈希值/字符串(在本例中为#home)直接加载内容。

我一直试图想出这个问题一段时间,非常感谢任何帮助,谢谢!

那你有什么问题? 设置哈希标记或处理哈希的更改?

当然设置哈希只是将哈希放在链接中的问题,例如Link但我猜这不是你的问题。

要实际使用散列执行某些操作,您必须具有一个侦听器函数,该函数检查例如每100ms更改散列并相应地执行操作。 一个简单的function可以像这样:

 $(function() { var current_hash = false; setInterval(function() { if(window.location.hash != current_hash) { current_hash = window.location.hash; $('#content').load("content.php?page="+current_hash); } }, 100); }); 

如果散列已经改变,那么(未经测试的)函数将检查每100ms,如果有,则通过Ajax更新页面。

此function也适用于页面加载,因此如果用户使用www.voidsync.com/2010/#images等链接www.voidsync.com/2010/#images ,该function将自动加载页面“图像”。 所以历史和书签工作。

希望有所帮助,只要问你是否有其他意义。

根据Tatu的回答,我只是改变了一些事情,让这对我有用。 它保留了历史记录,因此后退和前进按钮运行良好。 这是我的,

 $(function() { var current_hash = false; setInterval(function() { if(window.location.hash != current_hash) { current_hash = window.location.hash; if(current_hash=='#home'){ var month = '9'; var year ='2011'; $.ajax({ type: "POST", url: "/home.php", data: "data+here", success: function(msg){ $('#div').html(msg); } }); } else if(current_hash=='#edit'){ $.ajax({ type: "POST", url: "/edit.php", data: "data+here", success: function(msg){ $('#div').html(msg); } }); } } }, 100); 

然后简单地将一些哈希值分配给链接href属性;

  
  • Home Page
  • Edit Page
  • 这不是一个完整的重写,只是基本上添加了一些if语句到同一个东西,但它可以帮助某人。