自定义jQuery事件

我想创建自己的事件 – OnPositionChange。 事件实施当然不是问题。 关键是,当顶部或左侧样式发生变化时如何触发它? 我应该覆盖$ .css()函数的原型,还是有更好的解决方案?

我不确定理想的方法,但你总是可以设置一个区间来跟踪那些css值是否已经改变,然后触发事件:

//Usage same as bind $('#element').PositionChange(function(){...}); $.fn.PositionChange = function(data, fn) { //Bind given function and args to event to trigger later var self = $(this); self.bind('PositionChange',data,fn); var top = self.offset().top; var left = self.offset().left; setInterval(function(){ if(self.offset().top != top || self.offset().left != left){ self.trigger('PositionChange'); } top = self.offset().top; left = self.offset().left; },1000); //You might use a different interval than 1000 ms } 

我尝试了不同的东西,找到了这样的最佳解决方案:

 。$ .prototype.css2 = $ prototype.css;
 $ .prototype.css = function(key,value){
    的console.log(键);
     return this.css2(key,value);
 }

要检查大量对象,setInterval会使代码过慢。