jQuery如果没有按下按钮

时间:2017-07-06 14:30:26

标签: javascript jquery

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

现在我有了这个:

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

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

我做错了吗?

5 个答案:

答案 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后关闭,并检查该点是否已单击该按钮。

&#13;
&#13;
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;
&#13;
&#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函数为我做了,但我还没知道这个功能。

感谢您的回答!