2010-09-10 79 views
3

好像选择器":link"不支持jQuery的filter()is()函数。例如,如果我在页面上评估$(":link"),它会返回多个链接。如果我评估$(":link").filter(":link")$(":link").is(":link"),则会引发错误。错误消息是“语法错误,无法识别的表达式:链接”。

这是设计吗? filter()is()不支持相同的CSS选择器是jQuery一般吗?是否有关于差异的文档?

+2

你能告诉在文档中提到了':link'选择?因为我找不到它......(至少在这里http://api.jquery.com/category/selectors/) – Tomalak 2010-09-10 17:40:56

+0

我也找不到它。它支持$(“a:link”),但不支持.filter()。 – 2010-09-11 23:34:40

回答

4

Patrick评论说,jQuery在某些情况下默认存在于其所在的浏览器内置querySelector or querySelectorAll中。因此,:link似乎可以在某些浏览器上使用,但我不会建议使用它,因为它似乎会产生奇妙的奇怪结果。

<a href="www.foo.com">Hello</a> 

alert($("a").is("a")); // do it this way 

// changes the anchor's CSS, but does not return the length 
alert($(":link").css('background','yellow').length); 

演示:http://jsfiddle.net/xWPw7/4

+1

你的第三个测试实际上并没有失败(无论在Safari还是Firefox中)。第二次测试崩溃,所以第三次警报从不发生。如果您删除了第二个测试,以便第三个测试可以运行,则Safari显示长度为1,而FF显示为3.并且CSS通过'.css()'正确应用于链接。很奇怪。 http://jsfiddle.net/xWPw7/3/ – user113716 2010-09-10 18:14:17

+3

...我知道它是什么。在某些情况下,jQuery在内存中默认存在于'querySelector'或'querySelectorAll'中的browswer。显然':链接'支持。 http://jsfiddle.net/xWPw7/4/ – user113716 2010-09-10 18:21:02

+0

@帕特里克 - 不错。这确实很奇怪。 – karim79 2010-09-10 18:21:38