2017-07-06 182 views
1

我想检查一下jQuery中按下的按钮。如果按下按钮,页面必须向下滚动。如果按钮没有按下页面会显示一个动画,并且一旦完成,它必须向下滚动。jQuery如果没有按下按钮

现在我有这样的:

$('#btmmdl').click(function(){ 
    $(this).data('clicked', true); 
}); 

if($('#btmmdl').data('clicked')){ 
    // Scroll down 
} else { 
    // Show animation and scroll down after 9 seconds 
} 

难道我做错了什么?

+0

你的'if'语句应该在'setTimeout(function(){},9000);'函数中。 –

+0

@JeffNoel为什么9000? – tilz0R

+1

@ tilz0R OP的代码评论说'//显示动画并在9秒后向下滚动 – maxshuty

回答

2

您的问题是click事件执行当时是。你不知道用户什么时候点击按钮。因此,您必须在回调函数中添加if语句并执行您的任务。

$('#btmmdl').click(function() { 
    $(this).attr('data-clicked', !$(this).attr('data-clicked')); //Toggle status 
    if ($(this).attr('data-clicked')) { 
     // Scroll down 
    } else { 
     // Show animation and scroll down after 9 seconds 
    } 
}); 

每次点击都会切换模式。第一次单击将滚动,第二次将显示动画,第三次再次滚动等。

0

如果您正在使用CSS3动画,则可以使用jQuery选择器来侦听animationend后发生的向下滚动。

它的要点:

$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... }); 

欲了解更多信息检查这真棒计算器答案over here

在这种情况下,您也可以点击按钮结束动画,这也会触发后面的向下滚动。

有关如何结束动画check the jQuery finish() method

0

怎么样的详细信息:

$('#btmmdl').mousedown((function(){ 
 
    //SCROLLSDOWN 
 
}); 
 
$('#btmmdl').mouseup((function(){ 
 
    //SHOWSANIMATION 
 
});

0

代码不会为了想您所想执行。您需要设置一个超时时间,使其在9000毫秒后关闭,并检查该点上的按钮是否已被点击。

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);

0

我尝试了很多下方,但最后(通过另一个问题)解决方案的发现,为我工作的解决方案。

var scroll = setTimeout(function(){ 
    // Show animation and scroll down after 9 seconds 
}, 9000); 

$('#btmmdl').click(function(){ 
     // Scroll down 
     clearTimeout(scroll); 
    }); 

将Timeout作为var的clearTimeout函数为我做了,但我没有意识到这个功能。

感谢您的答案!

相关问题