如何在jQuery中阻止自动滚动到顶部?

时间:2012-03-24 00:34:27

标签: javascript jquery

这适用于所有其他浏览器,我不知道问题是什么。我有点匆忙,所以我想我会问你们,以防我错过任何明显的事情。我点击了一个链接,启动弹出窗口,在Firefox(可能还有歌剧)中,页面自动滚动回到顶部。

    $('[class*=popup-link]').click(function(e) {

    /* Prevent default actions */
    e.preventDefault();
    e.stopPropagation();

    /* Get the id (the number appended to the end of the classes) */
    var name = $(this).attr('class');
    var id = name[name.length - 1];

    /* Show the correct popup box, show the blackout and disable scrolling */
    $('#popup-box-'+id).show();
    $('#blackout').show();
    $("html,body").css("overflow","hidden");

});

我需要preventDefault和stopPropagation来阻止其他一些事情的发生。你能看到任何错误或阻止这种自动滚动到顶部的方法吗?谢谢!

快速编辑:

我还在运行一个使用

对框进行居中的功能
$(window).scroll(centerBox);

我不确定这是否会影响firefox中某些奇怪的滚动方式。这个函数的内容只是添加CSS,所以我怀疑它们会对它产生任何影响。

另一个编辑:

试用它的链接。我没有在Firefox上工作。 http://inserthtml.com/demo/internal-popup/

2 个答案:

答案 0 :(得分:1)

首先,我认为脚本没有错。它应该阻止“顶部跳跃”,即使只有e.preventDefault()。尝试剥离它。它应该判断这个处理程序是否导致它

$('[class*=popup-link]').click(function(e) {

    e.preventDefault();   //prevent the click from jumping esp on hashes
    e.stopPropagation();  //prevent from any parent click handlers that didn't prevent the jump

    //no code here for now

    return false;         //the natural way to prevent the jump
});

如果此代码阻止了跳转,则代码的其余部分会出现导致其特别损坏的脚本的问题。检查控制台是否还有错误

答案 1 :(得分:1)

e.preventDefault();
e.stopPropagation();

相当于

return false;

改变它们,你会没事的