Click and Hold event listener with Javascript

前端 未结 2 1823
终归单人心
终归单人心 2021-01-15 05:10

I want to make a page with Click and Hold event effect, like http://andeinerseite.video/ or http://2016.makemepulse.com/, I\'m interested in what framework uses to create th

相关标签:
2条回答
  • 2021-01-15 05:50

    You can use Javascript's setTimeout function and bind it to mousedown events. Have a look at the snippet below:

    // click and hold event listener
    
    var timeout_id = 0,
        hold_time = 1000,
        hold_menu = $('.hold_menu'),
        hold_trigger = $('.hold_trigger');
    
    hold_menu.hide();
    
    hold_trigger.mousedown(function() {
        timeout_id = setTimeout(menu_toggle, hold_time);
    }).bind('mouseup mouseleave', function() {
        clearTimeout(timeout_id);
    });
    
    function menu_toggle() {
      hold_menu.toggle();
    }
    ul.hold_menu {
      list-style: none;
      padding: 0;
      margin: 0;
    }
    
    ul.hold_menu a, div.hold_trigger  {
       display: inline-block;
       padding: 5px 15px;
       border: 1px solid #ccc;
       width: 300px;
    }
    
    ul.hold_menu a:link, ul.hold_menu a:visited {
       color: black;
       text-decoration: none;
    }
    
    ul.hold_menu a:active, ul.hold_menu a:hover {
       background: #ff0;
       text-decoration: none;
    }
    
    div.hold_trigger {
       color: black;
       cursor: pointer;
    }
    
    div.hold_trigger:hover {
       background: #ccc;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="hold_trigger">Click and hold to toggle the menu</div>
    <ul class="hold_menu">
       <li><a href="#">Option 1</a></li>
       <li><a href="#">Option 2</a></li>
       <li><a href="#">Option 3</a></li>
    </ul>

    Hope this helps!

    0 讨论(0)
  • 2021-01-15 06:03

    With plain javascript you can do something like this:

    selector.addEventListener('mousedown', function(event) { 
      // simulating hold event
      setTimeout(function() {
        // You are now in a hold state, you can do whatever you like!
      }, 500);
    });
    

    You can tweak the 500ms value to any timespan fits your needs.

    0 讨论(0)
提交回复
热议问题