Селектор jQuery, чтобы проверить, является ли элемент анимированным для скрытого - PullRequest
7 голосов
/ 12 мая 2010

Есть ли способ определить, является ли элемент скрытым или находится в процессе скрытия (с помощью анимации)? Единственный способ, которым я могу думать, это сохранить флаг в элементе data при вызове show или hide, но мне было интересно, был ли другой способ?

Ответы [ 3 ]

3 голосов
/ 03 июня 2010

Не могли бы вы сделать собственный селектор jQuery для него

 (function($) {
  var endOpacity,
      oldStep = jQuery.fx.step.opacity;

  $.fx.step.opacity = function( fx ) {
      endOpacity = fx.end;

      return oldStep(fx);
  };

$.expr[':'].hiding = function(obj){
  var $this = $(obj);

   return ($this.is(':hidden') || ($this.is(':animated') && endOpacity === 0));
};

})(jQuery);

Это сработало для меня (может потребоваться еще какое-то тестирование).

Так что просто добавьте :hiding, он будет соответствовать скрытым элементам и элементам, которые в данный момент анимируются в 0. Теперь он будет только соответствовать элементам, которые исчезают, но не появляются.

1 голос
/ 07 января 2013

Вы можете проверить, анимирован ли элемент так:

 if( !$('.your-element').is(':animated') ) {
   // do animation...
 } else {
   return false;
 }
1 голос
/ 12 мая 2010

Вы получаете скрытый с помощью $(":hidden"), а затем анимирующие с $(":animated") и с помощью :animated проверьте .queue(), есть ли внутри метод hide.

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