2009-06-24 6 views
1

Je souhaite créer mon propre événement - OnPositionChange. La mise en œuvre de l'événement n'est bien sûr pas un problème. Le point est, comment le déclencher quand le style haut ou gauche a changé? Devrais-je écraser le prototype de la fonction $ .css(), ou y a-t-il une meilleure solution?Événement jQuery personnalisé

Répondre

0

je tentais chose diffrent et trouvé meilleure solution comme ceci:

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

Avec une grande quantité d'objets à vérifier, setInterval ralentirait trop mon code.

1

Je ne suis pas sûr une méthode idéale, mais vous pouvez toujours définir un intervalle qui permet de vérifier si ces valeurs css ont changé, puis déclencher l'événement:

//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 
    } 
Questions connexes