自定义jQuery事件

自定义jQuery事件,jquery,javascript-events,Jquery,Javascript Events,我想创建自己的事件-OnPositionChange。当然,事件实现不是问题。关键是,当顶部或左侧样式发生更改时,如何触发它?我应该覆盖$.css()函数的原型,还是有更好的解决方案?我不确定是否有理想的方法,但您可以设置一个间隔来跟踪这些css值是否已更改,然后触发事件: //Usage same as bind $('#element').PositionChange(function(){...}); $.fn.PositionChange = function(data, fn) {

我想创建自己的事件-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
  }

我不确定是否有一个理想的方法,但您可以设置一个时间间隔来跟踪这些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(key); return this.css2(key,value); } $.prototype.css2=$.prototype.css; $.prototype.css=函数(键,值){ 控制台日志(键); 返回此.css2(键,值); }
由于要检查大量对象,setInterval会使我的代码速度过慢。

我尝试了不同的方法,找到了如下最佳解决方案:

$.prototype.css2=$.prototype.css; $.prototype.css=function( key, value ) { console.log(key); return this.css2(key,value); } $.prototype.css2=$.prototype.css; $.prototype.css=函数(键,值){ 控制台日志(键); 返回此.css2(键,值); } 由于要检查大量对象,setInterval会使我的代码速度过慢