我重新创建了我正在尝试做的简单版本here (jsFiddle)
标题应保持原样,当您向下滚动时,单击标题div时,它应向上滚动到顶部,这样做。但是,如果您专注于输入,或单击“徽标”,则滚动应保持原样。
我尝试的第一种方法是使用jQuery的.css
并将输入/徽标的z-index
设置为高于标题,然后获取当前滚动并将其保持在该位置。< / p>
此类工作,但是一旦您单击输入或徽标,标题滚动就不再有效。
我也尝试以慢速将徽标/输入jQuery更改为.animate
,并且它会保持静态几秒钟,然后滚动到顶部,即使我没有设置它这样做。这是第二个例子 - jsFiddle
使用第二个示例执行此操作但不会阻止其他功能工作。
我缺少这种行为的原因吗?
答案 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/