使用jQuery或Javascript基于哈希标记运行函数

时间:2011-10-16 21:01:23

标签: javascript jquery

在我的网站上,我有用户个人资料。每个用户配置文件都可以有多个选项卡,这些选项卡具有javascript函数以显示所选选项卡并隐藏所有其他选项卡。

我要做的是允许一组名为authors的用户能够发送指向其个人资料的链接,并在加载该个人资料时显示一个特定的标签。

获取此用户的个人资料:

http://www.findyourgeek.com/jasonward

我想让这个用户链接到他们的评论,如下所示:

http://www.findyourgeek.com/jasonward#reviews

我把代码放在我认为会起作用的document.ready函数中,但它没有:

if(window.location.hash.toLowerCase() == "reviews")
{
$('#profileAbout').hide();
$('#profileInterests').hide();
$('#profileOnline').hide();
$('#profileArticles').hide();
$('#profileReviews').slideDown();
$('#profileStatistics').hide();
$('#tabsAbout').removeClass('selected');
$('#tabsInterests').removeClass('selected');
$('#tabsOnline').removeClass('selected');
$('#tabsArticles').removeClass('selected');
$('#tabsReviews').addClass('selected');
$('#tabsStatistics').removeClass('selected');
}

但是,当代码运行时,它不会显示选项卡。读取#标签的代码是正确的,但它不会运行下面的代码。

此外,该代码也被定义为$('#tabsReviews a').click()

任何关于为什么这不起作用的想法或关于如何做得更好的任何更好的想法将不胜感激。

1 个答案:

答案 0 :(得分:4)

那是因为location.hash包含#。这应该有效:

if(window.location.hash.toLowerCase() == "#reviews")

你也可以组合这样的选择器:

$('#profileAbout, #profileInterests, #profileOnline, #profileArticles').hide();