有没有办法判断一个元素是隐藏还是当前正在隐藏(通过动画)?我能想到的唯一方法就是在你调用data
或show
时在元素hide
中存储一个标记,但我想知道是否还有另一种方式?
答案 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;
}