Настраиваемое событие jQuery - PullRequest
1 голос
/ 25 июня 2009

Я хочу создать свое собственное событие - OnPositionChange. Реализация событий, конечно, не является проблемой. Суть в том, как вызвать его, когда изменился верхний или левый стиль? Стоит ли перезаписывать прототип функции $ .css (), или есть лучшее решение?

Ответы [ 2 ]

1 голос
/ 25 июня 2009

Я не уверен насчет идеального метода, но вы всегда можете установить интервал, который отслеживает, изменились ли эти значения 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
  }
0 голосов
/ 27 июня 2009

Я пробовал разные вещи и нашел лучшее решение, как это:

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

При большом количестве проверяемых объектов setInterval слишком сильно замедлит мой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...