2

我发生了一件奇怪的事情:在导航中单击跨度时,内容必须切换。一切正常,除了当您单击跨度时页面跳转到它(然后跨度将位于顶部)。我发现关于页面跳转的所有内容都是关于锚标签并返回 false;但没有关于跨度。在我看来,切换内容不能怪,因为从来没有只有一个 div 有 display: 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() 在我尝试时不起作用(因为我猜它是跨度)。

4

1 回答 1

0

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

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

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

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

于 2012-01-15T10:55:48.050 回答