span.click()上的页面跳转

时间:2012-01-15 10:52:42

标签: jquery click html page-jump

我发生了这种奇怪的事情: 在导航中单击跨度时,内容必须切换。 一切都有效,除了当你点击一个跨度时页面跳转到它(然后跨度就在顶部)。我发现关于页面跳转的所有内容都是关于锚标签并返回false;但没有任何关于跨度。 在我看来,切换内容不能怪,因为从来没有只有一个div显示:none(如果是这种情况,页面应该跳到顶部而不是跳到跨度,对吧?) 防止任何行动似乎不适用于跨度。

$("#subnavi span").click(function(){
    $("#inner-content div:visible").animate({height: "toggle", opacity: "toggle"}, "slow");
    $("#content-"+this.id).animate({height: "toggle", opacity: "toggle"}, "slow");
    $("#subnavi span").attr("class", "");
    $(this).attr("class", "active");
});

如果说明令人困惑,请转到此处:http://gaming-siblings.com/v2.0/#news,然后点击左侧导航栏中的统计信息。页面将跳转到您刚刚单击的范围,并由于div的高度向后滚动一点。它为什么会跳到跨度?

这可能不奇怪但合理。我只是不明白: - )

我已经尝试了2天,从中休息了,因为这主要有帮助但不是这次。

任何想法/解决方案?如上所述,返回false;或者,当我尝试时,preventDefault()不起作用(因为它的跨度我猜)。

1 个答案:

答案 0 :(得分:0)

我在click()函数中发现了这一额外的行:

document.location.hash = "#" + this.id;

这是“跳转”的原因 - 您正在将哈希添加到页面的URL中,因此页面将自动滚动到该锚点(在这种情况下,它将滚动到自您点击后单击的元素'追加id)。

我知道没有真正的解决方法,不会完全重新加载页面。您最好的选择是使用单独的页面或根本不使用哈希值。