jQuery选择器,用于检查元素是否为隐藏动画

有没有办法判断元素是隐藏还是当前正在隐藏(通过动画)? 我能想到的唯一方法是在调用showhide时在元素的data存储一个标志,但我想知道是否还有另一种方法?

你能为它做一个自定义的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的元素。它现在匹配正在消失但不出现的元素。

您可以使用$(":hidden")隐藏其中一个,然后使用$(":animated")并使用:animated检查.queue()是否内置了hide方法。

您可以检查元素是否像这样动画:

  if( !$('.your-element').is(':animated') ) { // do animation... } else { return false; }