最近看到一道前端面试题:前端
请优化selector写法:$(".foo div#bar:eq(0)")面试
我给出的答案会是:优化
1. $("#bar")spa
2. $("div#bar") 插件
下面说说我为何会给出两种答案blog
1. 由于页面要求ID是惟一的,题目中的语句,能够直接优化成ID选择select
2. 由于jQuery的选择器引擎用的是Sizzle,而$("div#bar")这样的写法,在Sizzle内部,会是一个从右往左的查找顺序,也就是先找到id=bar的元素,而后再跟前面的标签类型作匹配。im
也许有人会以为第二种写法有点多余,但实际上,在一些须要限定标签类型的jQuery插件中,这样的写法很常见。img
在这里简单举个例子,不少人比较熟悉的jqGrid插件中就有这么一段:di