使用jQuery设计昂贵的定制事件?

使用jQuery设计昂贵的定制事件?,jquery,Jquery,我有一个昂贵的定制事件(由MutationObserver或轮询生成)。 它类似于 我只想在给定元素上有此事件的订阅者时进行观察/轮询 什么是与jQuery集成的正确方法,以便在订阅/取消订阅自定义事件时收到通知?我认为没有直接的方法 我可以提出的一个解决方案是使用实用方法注册/取消注册处理程序。。。差不多 var MyUtils = (function () { var counter = 0; function handlerPresent() { //do

我有一个昂贵的定制事件(由
MutationObserver
或轮询生成)。
它类似于

我只想在给定元素上有此事件的订阅者时进行观察/轮询


什么是与jQuery集成的正确方法,以便在订阅/取消订阅自定义事件时收到通知?

我认为没有直接的方法

我可以提出的一个解决方案是使用实用方法注册/取消注册处理程序。。。差不多

var MyUtils = (function () {
    var counter = 0;

    function handlerPresent() {
        //do somethig to fire the event
    }
    function handlerRemoved() {
        //do somethig to clear the firing
    }

    return {
        register: function (el, handler) {
            el.on('myevent', handler);
            counter++;
            if (counter == 1) {
                handlerPresent();
            }
        },
        deregister: function (el, handler) {
            el.off('myevent', handler);
            counter--;
            if (counter == 0) {
                handlerRemoved();
            }
        }

    }
})();

好的,我找到了一个解决方案,非常简单。
最低版本如下所示:

$.event.special.myevent = {
    setup:    function() { expensiveObserve($(this));   },
    teardown: function() { expensiveUnobserve($(this)); },
    noBubble: true
};
有关完整的API,请参阅