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