Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery选择器,用于检查元素是否设置为隐藏的动画_Javascript_Jquery - Fatal编程技术网

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

Javascript jQuery选择器,用于检查元素是否设置为隐藏的动画,javascript,jquery,Javascript,Jquery,有没有办法判断某个元素是隐藏的还是当前正在隐藏(通过动画)?我能想到的唯一方法是在调用show或hide时,在元素的数据中存储一个标志,但我想知道是否还有其他方法?你用$(“:hidden”)获得隐藏的标志,然后用$(“:animated”)获得动画的标志并使用:动画检查.queue()是否包含隐藏方法。是否可以为其执行自定义jQuery选择器 (function($) { var endOpacity, oldStep = jQuery.fx.step.opacity;

有没有办法判断某个元素是隐藏的还是当前正在隐藏(通过动画)?我能想到的唯一方法是在调用
show
hide
时,在元素的
数据中存储一个标志,但我想知道是否还有其他方法?

你用
$(“:hidden”)
获得隐藏的标志,然后用
$(“:animated”)获得动画的标志
并使用
:动画
检查
.queue()
是否包含
隐藏方法。

是否可以为其执行自定义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的元素。现在,它将只匹配正在消失而不是出现的元素。

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

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

我用以下代码检查队列:
$el.slideUp('slow');console.log($el.queue())
它所拥有的一切都是
[“进行中”]
这就是我能给你的所有指针-可能如果你检查了jQuery源代码,你会找到一种从队列对象中读取条目的方法。你是如何实现的?动画开始时在
数据中设置一个标志,再次检查那个标志。@nickf啊,一个解决方案,但不是那么优雅!我很想看到你让自定义选择器工作:)@alex-哈哈,挑战?我认为按照您的建议使用setTimeout是行不通的,因为这样选择将异步运行。一定有一些内部的“目标不透明度”值…@nickf是的,这就是我所想的。。。我不知道它是不是被暴露了。我可能会在这里问一个问题:)这是一个良好的开端,但我认为当有多个元素时,您会遇到问题。请参见:--单击段落使其淡入淡出。每隔一秒钟,隐藏的元素会被涂成红色,非隐藏的元素会被涂成蓝色。@nickf如果删除元素检查,这会怎么样