在jQuery中,选择器$('[id = foo]')效率低于$('#foo')吗?

时间:2010-08-18 17:17:56

标签: jquery jquery-selectors

在jQuery中,选择器 $('[id = foo]')效率低于 $('#foo')

2 个答案:

答案 0 :(得分:16)

  • 简短易行:

  • 长篇故事(实际上仍然很短)

     $('[id=foo]')
    

    使用Sizzle(css查询引擎)来选择元素,而

     $('#foo') 
    

    直接拨打getElementById

要讲一个非常长的故事,我们开始:$('[id=foo]')是使用通用选择器的$('*:[id=foo]')的同义词。这意味着,它会在您的标记中查询所有节点,然后查看其中哪些节点具有id === foo(然后希望它只匹配一个元素,ID =唯一)。当然,这是昂贵的,非常昂贵的。这就是为什么你永远不应该写这样的选择器! 如果可能,始终完全符合此条件,例如$('span:[id=foo]')

答案 1 :(得分:1)

对,

jQuery中最快的选择器是ID选择器$('#foo'),因为它直接映射到本机JavaScript方法getElementById()