Jquery 是否可以在类更改事件上触发事件?

Jquery 是否可以在类更改事件上触发事件?,jquery,callback,event-handling,Jquery,Callback,Event Handling,我想在HTML元素被我无法控制的其他js进程处理后,对它做些什么 例如,给定 ... ... 一些第三方异步应用程序执行$('div.x')。每个(function(){/*do stuff*/;this.addClass('processed');}) 当div的类更改为“processed”时,是否有一些策略来注册对div的兴趣?据我所知,这不是一系列的 您可能希望实现间隔轮询检查,尽管它听起来有点混乱:p没有简单的解决方案 查看可用的内容。这可能是个坏主意,但我认为它比轮询好 看看未压缩

我想在HTML元素被我无法控制的其他js进程处理后,对它做些什么

例如,给定 ... ...

一些第三方异步应用程序执行$('div.x')。每个(function(){/*do stuff*/;this.addClass('processed');})


当div的类更改为“processed”时,是否有一些策略来注册对div的兴趣?

据我所知,这不是一系列的

您可能希望实现间隔轮询检查,尽管它听起来有点混乱:p

没有简单的解决方案


查看可用的内容。

这可能是个坏主意,但我认为它比轮询好

看看未压缩的jQ库,复制addClass、removeClass和attr的代码

然后使用$.fn.extend传递这些方法的新定义。你真的不会改变他们那么多,只要告诉他们在完成任务后调用this.trigger('classChange')。虽然在attr的情况下,您需要一个if语句,告诉它仅当属性类是目标或键“class”在传入的哈希中时才触发

然后可以使用$(选择器).bind('classChange',lambda);为类更改时发生的情况提供操作

当然,我以前从未尝试过重载核心方法,但我不明白为什么你不能

可能看起来像这样。我从来没有看过interals,所以你可能无法像ove doen那样将其包含在块中-你可能必须修改单个switch/if case或其他东西

$.fn.extend({
  addClass: function(class){
    // standard jq logic
    this.trigger('changeClass');
    // standard return
  },
  removeClass: function(class){
    // standard jq logic
    this.trigger('changeClass');
    return this;
  },
  attr: function(prop, val){
    // standard jq logic

    if(typeof prop == 'object' && typeof prop.class != 'undefined'){
      this.trigger('changeClass');
    } else if(typeof prop == 'string' && typeof val !== 'undefined' && prop == 'class'){
      this.trigger('changeClass');
    }
    return this;
  }
}); 
试试这个

(function($){

$.each(["addClass","removeClass"],function(i,methodname){
      var oldmethod = $.fn[methodname];
      $.fn[methodname] = function(){
            oldmethod.apply( this, arguments );
            this.trigger(methodname+"change");
            return this;
      }
});

})(jQuery);
开始使用:

$('#demo').bind('addClass removeClass',function(event){
      alert(event.type + " event triggered!");
});
我从你那里得到了答案


语法错误:意外保留字参数:数组[0]获取消息:函数getter(){[native code]}获取堆栈:函数getter(){[native code]}设置消息:函数setter(){[native code]}设置堆栈:函数setter(){[native code]}类型:“意外保留”协议:错误