0

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

标题应该保持在原处,并且当您向下滚动时,当您单击标题 div 时,它应该向上滚动到顶部,它确实如此。但是,如果您专注于输入,或单击“徽标”,则滚动条应保持在原处。

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

这种工作,但一旦你点击输入或标志,标题滚动不再工作。

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

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

我错过了这种行为有什么原因吗?

4

3 回答 3

1

您可以防止单击事件传播到标题。

$("#logo, #input").click(function(e) {
    e.stopPropagation();
});
于 2011-11-22T20:59:03.997 回答
1

查看这篇关于事件顺序的有趣文章,您所要做的就是停止传播。这是你修改过的小提琴

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

    $('html').animate({
        scrollTop: y
    }, 'slow');
    $('body').animate({
        scrollTop: y
    }, 'slow');
});
于 2011-11-22T21:02:33.293 回答
0

您需要做的就是停止传播该事件。为此,您从 click 函数返回 false 。

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

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

于 2011-11-22T20:57:59.270 回答