我的页面上有一些通过ajax调用加载的元素。我想在用户浏览器中点击某个项目时更改该URL。例如,我的页面有一个动物列表:
Horse
Cow
Pig
当用户点击其中一个项目时,我想更新浏览器地址栏中的网址(不重新加载页面):
http://www.mysite.com#Horse
http://www.mysite.com#Cow
http://www.mysite.com#Pig
我认为这是允许的,将#符号放在地址中而不重新加载页面。有没有办法在jquery中这样做?
由于
答案 0 :(得分:6)
你可以在vanilla JS中完成,不需要使用location.hash
的jQuery,如下所示:
window.location.hash = "Cow";
答案 1 :(得分:4)
你不能把元素链接到哈希吗?
<a href="#Pig">Pig</a>
答案 2 :(得分:1)
警告!每个浏览器都没有实现window.location.hash
!解决此问题的方法如下:
if (!("hash" in window.location)) {
window.location.__defineGetter__("hash", function() {
if (location.href.indexOf("#") == -1) return "";
return location.href.substring(location.href.indexOf("#"));
});
window.location.__defineSetter__("hash", function(v) {
if (location.href.indexOf("#") == -1)
location.href += v;
location.href = location.href.substring(0, location.href.indexOf("#")) + v;
});
}
这是未经测试的,所以先测试一下!我的建议是使用:
<a href="#Pig">Oink!</a>
更改网址。 (顺便说一下,这里实现的window.location.hash
的行为与您实现它的浏览器的行为相同。您必须将哈希字符添加到URL。)
答案 3 :(得分:1)
我会考虑使用SWFAddress进行深层链接....它在JavaScript中的工作方式与ActionScript相同