关于jquery ID选择器的一点看法

时间:2023-12-29 09:59:44

最近看到一道前端面试题:

请优化selector写法:$(".foo div#bar:eq(0)")

我给出的答案会是:

1. $("#bar")

2.  $("div#bar")

下面说说我为什么会给出两种答案

1. 因为页面要求ID是唯一的,题目中的语句,可以直接优化成ID选择

2. 因为jQuery的选择器引擎用的是Sizzle,而$("div#bar")这样的写法,在Sizzle内部,会是一个从右往左的查找顺序,也就是先找到id=bar的元素,然后再跟前面的标签类型做匹配。

也许有人会觉得第二种写法有点多余,但实际上,在一些需要限定标签类型的jQuery插件中,这样的写法很常见。

在这里简单举个例子,很多人比较熟悉的jqGrid插件中就有这么一段:

关于jquery ID选择器的一点看法