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

时间:2010-05-12 00:48:03

标签: javascript jquery

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

3 个答案:

答案 0 :(得分:3)

你能为它做一个自定义的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);

This worked for me(可能需要进行更多测试)。

所以只需添加:hiding它就会匹配隐藏的元素,以及当前动画为0的元素。现在匹配正在消失但不显示的元素。

答案 1 :(得分:1)

您使用$(":hidden")获取隐藏的内容,然后使用$(":animated")制作动画内容,并使用:animated检查.queue()是否具有hide方法内部。

答案 2 :(得分:1)

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

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