JSFiddle - React, Tailwind, and code Playground

HTML

<div id="c"></div>

CSS

#c {
    width: 64px;
    height: 64px;
    background: red;
}

JavaScript

var controls = {
    game : {
        el : null,
        cb : null,
        
        bind : function(el, cb) {
            this.el = el;
            this.cb = cb;
            this.el.addEventListener('click', this.handler.bind(this), true);
        },
        
        unbind : function() {
            console.log('unbind');
            this.el.removeEventListener('click', this.handler, true);
        },
        
        handler : function() {
            this.cb();
            this.unbind();
        }
    }
};

var manager = {
    init : function() {
        var c = document.getElementById('c');
        controls.game.bind(c, this.action.bind(this));
    },
    
    action : function() {
        console.log('c clicked');
    }
};
manager.init();