防止对某些事件进行进一步的动画处理
preventing from animating further on some event
我这里有这段代码:
$(document).ready(function()
{
$("#nav_items > p:first-child").click(function()
{
$('html,body').animate(
{
scrollTop: $('#main_div').offset().top
}, 500);
});
$("#nav_items > p:last-child").click(function()
{
$('html,body').animate(
{
scrollTop: $('#about_us').offset().top
}, 800);
});
});
在元素 (p) 上,单击它将文档滚动到 #main_div 或 #about_us 元素。例如,如果我开始使用鼠标滚轮滚动,如何阻止它继续滚动?
您可以侦听 mousewheel
事件并使用 stop
方法:
$(window).on('mousewheel', function() {
$('body, html').stop();
});
这是一个方法,结合了 $(window).scroll()
和 $('body').on('mousewheel')
的使用,它将演示如何做你想要的事情:
jsFiddle 演示
var scrollPause = 0;
menuItems.click(function(e){
var href = $(this).attr("href"),
offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
scrollPause = 1;
$('html, body').stop().animate({
scrollTop: offsetTop
}, 300, function(){
setTimeout(function(){
scrollPause = 0;
},5000);
});
e.preventDefault();
});
$('body').on({
'mousewheel': function(e) {
if (scrollPause == 0) return;
e.preventDefault();
e.stopPropagation();
}
})
笔记:
在 jsFiddle 中,
sp
div 用于直观地显示 scrollPause 变量的状态单击顶部菜单项后,滚动暂停设置为
0
(禁止滚动),并使用setTimeout
在暂停 8 秒后重新启用它。因此,在滚动到元素之后,鼠标滚轮滚动将立即禁用 8 秒。
相关文章:
- 如何设置html元素填充的动画
- 如何使用动画实现纸张推车
- 如何在生成下载文件时显示加载动画
- 剑道网格jQuery动画()问题
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- jQuery Lazy加载动画滚动
- jquery动画可以通过编程链接吗
- Javascript将数学动画化
- 动画.CSS重播
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 如何使用jQuery在动画中期加速动画
- 使用数据上的角度更改设置集合的第一个元素的动画
- 如何使用css动画/javascript使具有背景图像的元素出现
- 如何使用css动画从中心增加边界线
- JQuery动画延长容器不起作用
- 动画CSS进度条
- JavaScript动画从不执行
- 更多延迟动画
- 防止对某些事件进行进一步的动画处理
- 我的jQuery动画很有效,但我想进一步改进它