代码之家  ›  专栏  ›  技术社区  ›  nickf

jQuery selector检查元素是否设置为隐藏的动画

  •  7
  • nickf  · 技术社区  · 14 年前

    有没有办法判断一个元素是隐藏的还是正在隐藏的(通过动画)?我能想到的唯一方法就是在元素的 data 当你打电话的时候 show hide ,但我想知道有没有别的办法?

    3 回复  |  直到 14 年前
        1
  •  3
  •   alex    14 年前

     (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动画的元素。现在会的 只有 匹配正在消失而不是出现的元素。

        2
  •  1
  •   Jakub Hampl    14 年前

    $(":hidden") 然后是带动画的 $(":animated") 和那个 :animated 检查 .queue() 如果它有 hide 方法内部。

        3
  •  1
  •   Slipstream Stephan    12 年前

    您可以检查元素的动画是否如下所示:

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