选择器至少可以追溯到“CSS选择器”。jQuery的源代码中内嵌了一个叫Sizzle的对象,其实就是选择器了。在jQuery官网上显示Sizzle属于“Other jQuery Foundation Projects”,Sizzle能够独立为一个单独的项目,由此不难体会到选择器的重要性。看看下面三个页面,相比之下,jQuery选择器官方文档看起来是最“乱”的。
- http://www.w3.org/TR/css3-selectors
- CSS选择器W3C标准文档
- https://github.com/jquery/sizzle/wiki/Sizzle-Documentation
- Sizzle文档
- http://api.jquery.com/category/selectors/
- jQuery选择器官方文档
jquery1.9.0源代码有这样一行:
- jQuery.find = Sizzle;
- iJs.showObjectNames("window.jQuery.find");
- iJs.showObjectNames("window.Sizzle");
语法 | 含义 | 链接 | 版本 |
---|---|---|---|
* | any element | 更多 | 2 |
E | an element of type E | 更多 | 1 |
E[foo] | an E element with a "foo" attribute | 更多 | 2 |
E[foo="bar"] | an E element whose "foo" attribute value is exactly equal to "bar" | 更多 | 2 |
E[foo~="bar"] | an E element whose "foo" attribute value is a list of whitespace-separated values, one of which is exactly equal to "bar" | 更多 | 2 |
E[foo^="bar"] | an E element whose "foo" attribute value begins exactly with the string "bar" | 更多 | 3 |
E[foo$="bar"] | an E element whose "foo" attribute value ends exactly with the string "bar" | 更多 | 3 |
E[foo*="bar"] | an E element whose "foo" attribute value contains the substring "bar" | 更多 | 3 |
E[foo|="en"] | an E element whose "foo" attribute has a hyphen-separated list of values beginning (from the left) with "en" | 更多 | 2 |
E:root | an E element, root of the document | 更多 | 3 |
E:nth-child(n) | an E element, the n-th child of its parent | 更多 | 3 |
E:nth-last-child(n) | an E element, the n-th child of its parent, counting from the last one | 更多 | 3 |
E:nth-of-type(n) | an E element, the n-th sibling of its type | 更多 | 3 |
E:nth-last-of-type(n) | an E element, the n-th sibling of its type, counting from the last one | 更多 | 3 |
E:first-child | an E element, first child of its parent | 更多 | 2 |
E:last-child | an E element, last child of its parent | 更多 | 3 |
E:first-of-type | an E element, first sibling of its type | 更多 | 3 |
E:last-of-type | an E element, last sibling of its type | 更多 | 3 |
E:only-child | an E element, only child of its parent | 更多 | 3 |
E:only-of-type | an E element, only sibling of its type | 更多 | 3 |
E:empty | an E element that has no children (including text nodes) | 更多 | 3 |
E:link E:visited |
an E element being the source anchor of a hyperlink of which the target is not yet visited (:link) or already visited (:visited) | 更多 | 1 |
E:active E:hover E:focus |
an E element during certain user actions | 更多 | 1 and 2 |
E:target | an E element being the target of the referring URI | 更多 | 3 |
E:lang(fr) | an element of type E in language "fr" (the document language specifies how language is determined) | 更多 | 2 |
E:enabled E:disabled |
a user interface element E which is enabled or disabled | 更多 | 3 |
E:checked | a user interface element E which is checked (for instance a radio-button or checkbox) | 更多 | 3 |
E::first-line | the first formatted line of an E element | 更多 | 1 |
E::first-letter | the first formatted letter of an E element | 更多 | 1 |
E::before | generated content before an E element | 更多 | 2 |
E::after | generated content after an E element | 更多 | 2 |
E.warning | an E element whose class is "warning" (the document language specifies how class is determined). | 更多 | 1 |
E#myid | an E element with ID equal to "myid". | 更多 | 1 |
E:not(s) | an E element that does not match simple selector s | 更多 | 3 |
E F | an F element descendant of an E element | 更多 | 1 |
E > F | an F element child of an E element | 更多 | 2 |
E + F | an F element immediately preceded by an E element | 更多 | 2 |
E ~ F | an F element preceded by an E element | 更多 | 3 |
选择器的语法是有标准的,逐一尝试每一种写法没有必要,今天学会了也许明天就忘记,不如有文档在手,用到时再翻阅。需要想一想的是选择器的价值所在,从根本上来讲,选择器就是帮助我们避免了遍历DOM(或者也包括XML?)的麻烦。一个两个的遍历代码其实也不难写,但是网页上的互动多了就麻烦了,下面是一个隔行选取的代码片断,不难体会其中运用选择器的奥妙所在:
- <div>
- <b>...测试1...</b>
- <b>...测试2...</b>
- <b>...测试3...</b>
- <b>...测试4...</b>
- </div>
- <script language="javascript">
- var $myObj = jQuery('div b:nth-child(even)');//选择器
- $myObj.each(
- function(i){
- var tTemp = jQuery(this).text();
- iJs.put(tTemp);//输出选择结果
- });
- </script>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。