单击<a href=""> tag in IE, jquery is attached to the a href</a>页面跳转

时间:2011-06-23 17:53:14

标签: jquery html internet-explorer

我有四个链接,href指向通过.load()加载的页面的URL,问题出在IE中,当你单击它时页面会跳转,我已经在代码中附加了(window).scrollTo(0)在IE以外的所有浏览器中修复它。

我在代码上也有return false,因此它会停止默认行为。

我已经看到:Page jumps to the top onclick并尝试实施答案,但它似乎对我不起作用。

有人知道解决方案吗?

href的:

<a href="welcome.html" name="welcome">Welcome</a>
<a href="about.html" name="about">About</a>
<a href="forum.html" name="forum">Forum</a>
<a href="contact.html" name="contact">Contact</a>

jQuery代码:

    $('#jqNav li a').click(function(e){

    if($(this).parent().is(".nav1")){ $('.landing .main .nav ul').css({ "background-position" : "0 -50px" });} 
    else if($(this).parent().is(".nav2")) { $('.landing .main .nav ul').css({ "background-position" : "0 -100px" });}
    else if($(this).parent().is(".nav3")) { $('.landing .main .nav ul').css({ "background-position" : "0 -150px" });}
    else if($(this).parent().is(".nav4")) { $('.landing .main .nav ul').css({ "background-position" : "0 -200px" });};

    stopAnim = true;
    $page = $(this).attr('href');
    var $hashTag = $(this).attr('name');
    window.location.hash = $hashTag;
    loadData();
    $(window).scrollTop(0);
    e.preventDefault();

});

1 个答案:

答案 0 :(得分:0)

回答我自己的问题;

window.location.hash生成了<a name="hash name">生成的内容,因此浏览器将页面推送到页面上的元素。

我所做的是从锚标签中删除了name元素,并通过jQuery推送了名称。由于我只有4个锚标签,这对我的场景来说是最简单的解决方案,如果你引用大量的哈希标签并希望阻止它跳跃,我发现Stack Overflow上的另一篇文章有​​一些很棒的答案。

Modifying document.location.hash without page scrolling