我想创建自己的事件 - OnPositionChange。事件的实施当然不是问题。关键是,当顶部或左侧样式发生变化时如何触发它?我应该覆盖$ .css()函数的原型,还是有更好的解决方案?
答案 0 :(得分: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
}
答案 1 :(得分:0)
我尝试了不同的事情并找到了最佳解决方案:
$.prototype.css2=$.prototype.css; $.prototype.css=function( key, value ) { console.log(key); return this.css2(key,value); }
要检查大量对象,setInterval会使代码过慢。