Javascript / jQuery scrollTop问题

时间:2011-11-22 20:50:36

标签: javascript jquery scrolltop

我重新创建了我正在尝试做的简单版本here (jsFiddle)

标题应保持原样,当您向下滚动时,单击标题div时,它应向上滚动到顶部,这样做。但是,如果您专注于输入,或单击“徽标”,则滚动应保持原样。

我尝试的第一种方法是使用jQuery的.css并将输入/徽标的z-index设置为高于标题,然后获取当前滚动并将其保持在该位置。< / p>

此类工作,但是一旦您单击输入或徽标,标题滚动就不再有效。

我也尝试以慢速将徽标/输入jQuery更改为.animate,并且它会保持静态几秒钟,然后滚动到顶部,即使我没有设置它这样做。这是第二个例子 - jsFiddle

使用第二个示例执行此操作但不会阻止其他功能工作。

我缺少这种行为的原因吗?

3 个答案:

答案 0 :(得分:1)

您可以阻止点击事件传播到标题。

$("#logo, #input").click(function(e) {
    e.stopPropagation();
});

答案 1 :(得分:1)

查看有关事件顺序的有趣article,您所要做的就是停止传播。这是您修改后的Fiddle

$("#logo, #input").click(function(e) {
    e.stopPropagation();
    var y = window.scrollY;

    $('html').animate({
        scrollTop: y
    }, 'slow');
    $('body').animate({
        scrollTop: y
    }, 'slow');
});

答案 2 :(得分:0)

您需要做的就是停止事件的传播。要执行此操作,请从单击函数返回false。

$("#logo, #input").click(function() {
    return false;  // Add this line
});

这是您的小提琴更新:http://jsfiddle.net/BRnvT/