Существует ли способ сказать, скрыт ли элемент или или в настоящее время находится в процессе сокрытия (через анимацию)? Единственным путем я могу думать, чтобы сделать это, должен сохранить флаг в элементе data
когда Вы звоните show
или hide
, но я задавался вопросом, было ли иначе?
Вы получаете скрытые с помощью $(":hidden")
, а затем анимированные с помощью $(":animated")
и с помощью :animated
проверьте .queue()
, если в нем есть метод hide
.
Не могли бы вы создать для него собственный селектор 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. Теперь только будут соответствовать элементам, которые исчезают, а не появляются.