2009-06-24 204 views
1

我想創建自己的事件 - OnPositionChange。事件的實施當然不是問題。關鍵是,如何在頂部或左側樣式發生變化時觸發它?我應該覆蓋$ .css()函數的原型,還是有更好的解決方案?自定義jQuery事件

回答

0

我是想指出錯誤的事情,發現最好的解決方案是這樣的:

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

有大量的對象來檢查setInterval會減慢我的代碼太多。

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 
    }