一个接一个地启动单击功能

时间:2018-02-11 23:41:49

标签: javascript jquery function onclick delay

我有不同的功能,例如:

  function showpanel() {     
$( ".top-buttons .col-md-4 a" ).addClass('crop-anim');
$('body').addClass('stepone')

}

 function showcolor() {     
    $( ".top-buttons .col-md-4 a" ).addClass('cropcolor')
  }

  function hidepanel() {     
    $( ".top-buttons .col-md-4 a" ).removeClass('crop-anim')
    // $( ".top-buttons .col-md-4 a" ).addClass('slideup')
    $( ".top-buttons .col-md-4 a img.crop" ).removeClass('hide')
    $( ".top-buttons .col-md-4 a .right-align" ).removeClass('before')
    $( ".top-buttons .col-md-4 a img.title" ).removeClass('before')
    // $( ".top-buttons" ).removeClass('before')
    // $( ".top-buttons" ).css('margin-top','0px')
  }

我想在点击时触发一个特定的功能,这可以正常工作:

  $("#body").click(function() {
showpanel()
 });

以上工作完美无缺。

但是如果我想在showpanel函数完成后立即启动函数hidepanel(),那么上面是什么?

我怎样才能做到这一点?

我在上面的场景中尝试了以下内容:

  $("#body").click(function() {
showpanel()
hidepanel(2800)
});

喜欢延迟2800毫秒,但没有成功。 。

情景2我试图实现;

在showpanel功能结束时,hidepanel功能会直接触发。然后再次单击body div,它将触发showcolor函数。

这怎么可能呢?任何帮助/指针都会超级!!

感谢你!

1 个答案:

答案 0 :(得分:0)

setTimeout()肯定是你所追求的。

$("#body").click(function() {
  showpanel();

  setTimeout(function(){
    hidepanel();
  },2800);
});

修改

要根据"点击序列"触发不同的操作,您可以使用switch()

var clickCounter = 0;

$("#body").click(function() {

  // Increment clickCounter
  clickCounter++;

  switch (clickCounter){

    // First click
    case 1:
      showpanel();

      setTimeout(function(){
        hidepanel(2800)
      },2800);

      break;

    // Second click
    case 2:
      FirstOtherAction();

      break;

    // Third click
    case 3:
      secondOtherAction();

      break;

    // All subsequent clicks
    default:
      allOtherAction();

      break;

   }  // End switch

});  // End click handler