JS equivalent for jQuery one()

后端 未结 5 1016
执念已碎
执念已碎 2020-12-14 22:34

Can someone point me towards a solution for the following? I\'m trying to find a JS equivalent for this jQuery code:

var formSelector = \'my selector here\';         


        
5条回答
  •  渐次进展
    2020-12-14 23:21

    Update

    In most browsers you can now pass in once: true in an options object:

    document.getElementById('btn').addEventListener('click', () => {
      console.log('Hello and goodbye');
    }, {
      once: true,
    });


    Old way

    In the eventlistener callback, just destroy the event listener :) Here's a helper function:

    function oneTimeEvent(element, eventType, callback) {
      element.addEventListener(eventType, function(e) {
        e.target.removeEventListener(e.type, arguments.callee);
        return callback(e);
      });
    }
    
    var btn = document.querySelector('button');
    oneTimeEvent(btn, 'click', function () {
      alert('♫ You clicked me once, but I won\'t let you click me twice, yeah!');
    });

提交回复
热议问题