前面两篇已经道明了jQuery的核心框架。弄清楚了jQuery对象的组成,以及如何用extend方法来扩展库。链式操作 也仅仅是方法体内返回this。
为了叙述每一篇的重点,其示例代码都是最精简的,比如选择器只能传HTMLElement和id。
这篇我们增强下选择器,依据2/8原则,这里仅实现最常用的几种。
1, 通过id获取,该元素是唯一的
1 | $( '#id' ) |
2, 通过className获取
1 2 3 4 5 6 | $( '.cls' ) // 获取文档中所有className为cls的元素 $( '.cls' , el) $( '.cls' , '#id' ) $( 'span.cls' ) // 获取文档中所有className为cls的span元素 $( 'span.cls' , el) // 获取指定元素中className为cls的元素, el为HTMLElement (不推荐) $( 'span.cls' , '#id' ) // 获取指定id的元素中className为cls的元素 |
3, 通过tagName获取
1 2 3 | $( 'span' ) // 获取文档中所有的span元素 $( 'span' , el) // 获取指定元素中的span元素, el为HTMLElement (不推荐) $( 'span' , '#id' ) // 获取指定id的元素中的span元素 |
4, 通过attribute获取
1 2 3 4 5 6 7 8 9 | $( '[name]' ) // 获取文档中具有属性name的元素 $( '[name]' , el) $( '[name]' , '#id' ) $( '[name=uname]' ) // 获取文档中所有属性name=uname的元素 $( '[name=uname]' , el) $( '[name=uname]' , '#id' ) $( 'input[name=uname]' ) // 获取文档中所有属性name=uname的input元素 $( 'input[name=uname]' , el) $( 'input[name=uname]' , '#id' ) |
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!DOCTYPE html> <html> <head> <meta charset= "utf-8" > <title>zchain test</title> </head> <body> <div id= 'content' >aaa</div> <div>bbb</div> <p class = "pra" >ccc</p> <input type= "submit" value= "submit" /> <input type= "button" value= "submit" /> <script type= "text/javascript" > var obj1 = $( "#content" ); // id var obj2 = $( 'div' ); // tagName var obj3 = $( '.pra' ); // className var obj4 = $( 'input[type=button]' ); // attribute console.log(obj1); console.log(obj2); console.log(obj3); console.log(obj4); </script> </body> </html> |
Firebug输出如下