我想检查jQuery中按下了一个按钮。如果按下该按钮,页面必须向下滚动。如果没有按下按钮,页面会显示动画,一旦完成,就必须向下滚动。
现在我有了这个:
$('#btmmdl').click(function(){
$(this).data('clicked', true);
});
if($('#btmmdl').data('clicked')){
// Scroll down
} else {
// Show animation and scroll down after 9 seconds
}
我做错了吗?
答案 0 :(得分:2)
您的问题是{<1}}事件在时执行。您不知道用户何时会点击按钮。因此,您必须在回调函数中添加if语句并执行任务。
click
每次点击都会切换模式。第一次点击会滚动,第二次会显示动画,第三次会滚动,等等。
答案 1 :(得分:0)
如果您使用的是CSS3动画,则可以使用jQuery选择器监听animationend
在发生后向下滚动。
它的要点:
$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... });
有关更多信息,请查看这个非常棒的stackoverflow答案over here。
在这种情况下,你也可以点击按钮结束动画,这也会在之后触发向下滚动。
有关如何结束动画check the jQuery finish()
method
答案 2 :(得分:0)
怎么样:
$('#btmmdl').mousedown((function(){
//SCROLLSDOWN
});
$('#btmmdl').mouseup((function(){
//SHOWSANIMATION
});
答案 3 :(得分:0)
代码没有像您想象的那样按顺序执行。您需要将超时设置为在9000 ms后关闭,并检查该点是否已单击该按钮。
var $btmmdl = $('#btmmdl');
$btmmdl.click(function(){
$(this).data('clicked', true);
// Scroll down
});
//If the button hasn't been clicked after 9 seconds, scroll
setTimeout(function(){
if(!$btmmdl.data('clicked')){
// Show animation and scroll
}
}, 9000);
&#13;
答案 4 :(得分:0)
我在下面尝试了很多解决方案,但最后(通过另一个问题)找到了一个对我有用的解决方案。
var scroll = setTimeout(function(){
// Show animation and scroll down after 9 seconds
}, 9000);
$('#btmmdl').click(function(){
// Scroll down
clearTimeout(scroll);
});
使用Timeout作为var的clearTimeout函数为我做了,但我还没知道这个功能。
感谢您的回答!