FireFox警告“未知的伪类或伪元素'隐藏'”一直反复运行

时间:2009-12-02 22:17:46

标签: javascript jquery

我最近在Firefox中发现了一个警告

  

警告:未知的伪类或伪元素'隐藏'

这是页面http://eleven23.net/eleven23/beta/work/web/lounge22.php

当它到达具有img:hidden

的javascript部分时会发出警告
  

$('img:hidden')。eq(0).fadeIn(500); //逐个淡入隐藏的图像               i ++; //将1添加到计数

所以我想知道是否有人知道如何解决此警告。

谢谢!

2 个答案:

答案 0 :(得分:2)

第一步是真正停止通过doThis()重复调用setInterval,此时此刻不会发生。因此警告每500ms出现一次。

更改

$(document).ready (function() {
  var int = setInterval("doThis(i)",500);
});

$(document).ready (function() {
  int = setInterval("doThis(i)",500);
});

否则,您对clearInterval(int)的调用将不会执行任何操作,因为您声明var int两次,并尝试清除不是间隔的“外部”int。

在此修复之后,此警告中只有4-5应保留在您的控制台中。


现在给你的错误。您无法阻止此错误多次出现doThis()时出现错误。

jQuery在内部使用Sizzle作为选择器引擎。在某些情况下,Sizzle会尝试使用(在支持的浏览器上)querySelectorAll()函数来查找与您的选择器匹配的元素。

现在AFAIK hidden不是有效的CSS选择器,因此虽然Firefox支持对querySelectorAll()的调用,但在遇到未知选择器后它正确失败。 jQuery捕获错误,然后选择image:hidden本身。

如果你根本不想看到这个错误,你可以使用不同的jQuery语法,在这种情况下会阻止Sizzle尝试使用querySelectorAll()

更改

$('img:hidden').eq(0).fadeIn(500);

$('img:hidden', $('div#content_wrapper')).eq(0).fadeIn(500);

但是我并不建议你这样做,因为它不会让你在控制台中只有4-5次警告。

答案 1 :(得分:0)

不幸的是,这是JQuery本身的一个错误。请参阅:http://docs.jquery.com/Selectors/hidden

检查萤火虫,即使在他们的示例页面上,您也会得到同样的警告。它引用了一个不存在的CSS伪类:hidden。你在哪里使用$('img:hidden')