1

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

4

2 回答 2

1

我不确定一个理想的方法,但你总是可以设置一个间隔来跟踪这些 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
  }
于 2009-06-24T21:25:56.833 回答
0

我正在尝试不同的事情并找到了这样的最佳解决方案:

$.prototype.css2=$.prototype.css;
$.prototype.css=函数(键,值){
    控制台.log(键);
    返回 this.css2(key,value);
}

使用大量对象来检查 setInterval 会大大降低我的代码速度。

于 2009-06-27T09:07:01.613 回答