获取URL哈希位置,并在jQuery中使用它

我想获得当前页面的URL哈希后的值,然后能够将其应用于一个新的function…例如。

url可以是

www.example.com/index.html#foo 

我想和下面的一段代码一起使用

 $('ul#foo:first').show(); 

我有点假设/希望有办法抓住这个,把它变成一个variables,然后我可以在第二段代码中使用。

任何帮助将大力赞赏!

干杯

您可以使用location.hash属性来获取当前页面的哈希值:

 var hash = window.location.hash; $('ul'+hash+':first').show(); 

请注意,该属性在开头已经包含了#符号。

其实你不需要:first伪select器,因为你正在使用IDselect器 ,假设ID在DOM中是唯一的。

如果你想从URLstring中获取哈希值,可以使用String.substring方法:

 var url = "http://example.com/file.htm#foo"; var hash = url.substring(url.indexOf('#')); // '#foo' 

build议:请注意,用户可以根据需要更改散列,向select器中注入任何内容,在使用散列之前应检查散列。

如果IE(包括IE9),如果你的页面包含iframe,那么在iframe内容的手动刷新之后,location.hash的值是旧的(首页加载的值), location.hash对于IE是不安全的 。 而手动检索的值不同于location.hash,因此总是通过document.URL检索

 var hash = document.URL.substr(document.URL.indexOf('#')+1) 

对于那些正在寻找纯粹的JavaScript解决scheme

  document.getElementById(location.hash.substring(1)).style.display = 'block' 

希望这可以为你节省一些时间。