如果在像Chrome这样的webkit浏览器中,我会执行以下操作:
$$('span');
我得到的结果看上去与jQuery几乎完全相同:
$('span');
如果在控制台中寻找
$$
的定义,则会得到:bound: function ()
{
return document.querySelectorAll.apply(document, arguments)
}
对于
$
我得到:function (a,b){return new c.fn.init(a,b)}
我不能真正使用jQuery(
$$
)对象执行什么类型的函数? 最佳答案
由于$$
只是querySelectorAll
的包装,您可以传递任何有效的选择器。
首先,$$
不是像jQuery这样的对象。它是一个对象,但这只是一个简单的函数对象,是document.querySelectorAll
的包装器(快捷方式)。它返回找到的元素的NodeList
。
据我所知,它唯一支持Sizzle不特别支持的是:nth-of-type
。
(当然,当您提供有效的选择器时,Sizzle默认会默认为qsa
,因此您可以在也支持nth-of-type
的浏览器中将qsa
传递给jQuery函数。)
使用Sizzle,querySelectorAll
不支持几个选择器,因此从技术上讲,您可以使用jQuery / Sizzle做更多的选择。
这些包括:
:eq()
:gt()
:lt()
:first
:last
:not()
(为您提供多个选择器。:not()
支持简单的qsa
值。):animated
:input
:button
:checkbox
:even
:odd
:has()
:image
:password
:radio
:reset
:selected
:submit
:text
:visible
...仅举几例
请记住,Sizzle首先尝试使用
querySelectorAll
。如果您通过了专有选择器,则它将默认为Sizzle自己的引擎。由于
qsa
通常比Sizzle快,因此建议考虑使用上面列出的专有选择器的替代方法,以提高性能。另请注意,除了在控制台中以外,
Webkit
均未定义$$
。除非您使它可用,否则$$
快捷方式在脚本中不可用。