Event capturing jQuery

后端 未结 3 2098
故里飘歌
故里飘歌 2020-11-27 18:02

I need to capture an event instead of letting it bubble. This is what I want:


   

Fro

3条回答
  •  伪装坚强ぢ
    2020-11-27 18:32

    More generally than @pvnarula's answer:

    var global_handler = function(name, handler) {
        var bodyEle = $("body").get(0);
        if(bodyEle.addEventListener) {
            bodyEle.addEventListener(name, handler, true);
        } else if(bodyEle.attachEvent) {
            handler = function(){
                var event = window.event;
                handler(event)
            };
            document.attachEvent("on" + name, handler)
        }
        return handler
    }
    var global_handler_off = function(name, handler) {
        var bodyEle = $("body").get(0);
        if(bodyEle.removeEventListener) {
           bodyEle.removeEventListener(name, handler, true);
        } else if(bodyEle.detachEvent) {
           document.detachEvent("on" + name, handler);
        }
    }
    

    Then to use:

    shield_handler = global_handler("click", function(ev) {
        console.log("poof")
    })
    
    // disable
    global_handler_off("click", shield_handler)
    shield_handler = null;
    

提交回复
热议问题