点击第1次点击,然后在第二次点击时做一些不同的事情?

时间:2013-12-11 01:38:34

标签: jquery

我试图找到一种方法来做到这一点但不完全确定它的可能性。我有一个名为'messages_nav'的div,一旦点击它就切换/显示另一个名为'drop_down_column3'的div。一般的想法是,一旦点击'messages_nav'它会显示一种下拉框,但如果用户第二次点击父div /'messages_nav',我希望它们被带到一个URL地址。

任何人都可以告诉我如何做到这一点。

这是我已经控制了切换功能的jQuery:

<script type="text/javascript"> 
   $(function() {
       $('.messages_nav').click(function() {
           $('.drop_down_column3').toggle();
           return false; 
       });        
   });
</script>

5 个答案:

答案 0 :(得分:1)

  var firstClick = true;

  $('.messages_nav').click(function() {

       if(firstClick){
           // do first click stuff
           firstClick = false;
       } else {
           // do second (and beyond?) click stuff
       }
  }); 

答案 1 :(得分:0)

使用另一个变量来跟踪点击量,然后使用条件来执行所需的操作。

   var clickCount = 0;

   $(function() {
       //this does the reset mentioned in your comment
       clickCount = (clickCount == 2) ? 0:clickCount;
       $('.messages_nav').click(function() {
           if(clickCount == 0){
              $('.drop_down_column3').toggle();
           }else if(clickCount == 1){
              //do something else on second click;
           }
           clickCount++;
       });        
   });

JS小提琴: http://jsfiddle.net/r663L/1/

答案 2 :(得分:0)

使用第三个变量,在开头将其设置为false,在第一次单击它时将其设置为true。然后验证变量是否为真并做第二件事

答案 3 :(得分:0)

我会使用这种方法,因为你可能想要为不同的状态使用不同的样式。

$('.message_nav').on('click', function(){

  var $this = $(this);

  $this.toggleClass('expanded');

  if ($this.is('.expanded')) {
    console.log('The message nav is expanded!');
  } else {
    console.log('The message nav is not expanded!');
  }

});

这是一个快速演示:http://jsbin.com/UxUGEcey/2/edit?html,css,js,output

答案 4 :(得分:0)

我会将jquery one metheod与事件结合使用:

<script type="text/javascript"> 
   $(function() {
       $('.messages_nav').one("click", function() {
           $('.drop_down_column3').toggle();

            $('.messages_nav').on("click", function() {
                //this code will execute on second click and further clicks 
            });

           return false; 
       });        
   });
</script>