标签:des style blog http color io os 使用 java
(一)DOM扩展
对DOM的主要的扩展是SelectorsAPI(选择符API)和HTML5,还有一个Element Travesal规范。
1.选择符API
jQuery的核心就是通过CSS选择符查询DOM文档取得元素的引用,从而抛开了getElementById( ) 和 getElementsByTagName( ).
Selectors API Level 1的核心是两个方法:querySelector( )和 querySelectorAll( ).
<body> <ul> <li>First item</li> <li class="selected">Second item</li> <li>Third item</li> </ul> <script> if(document.querySelector){ var body = document.querySelector("body"); alert(body); //[object HTMLBodyElement] var selected = document.querySelector(".selected"); alert(selected.nodeName); //LI var img = document.body.querySelector("img.button"); alert(img); //null }else{ alert("Not Supported QuerySelector"); } </script> </body>
通过Document 类型调用querySelector( )方法时,会在文档元素的范围内查找匹配的元素。
而通过Element类型调用querySelector( )方法时,只会在该元素后代元素的范围内查找匹配的元素。
能够调用querySelectorAll( )方法的类型包括Document、DocumentFragment 和 Element。
<body> <ul> <li>First item</li> <li class="selected">Second item</li> <li>Third item</li> </ul> <p><strong>Pellentesque habitant morbi tristique</strong> senectus et it amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> M auris placerat eleifend leo. <code>commodo vitae</code>, ornare c dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p> <blockquote><p>Lorem ipsum dolor sit amet, <strong>consectetur adipiscing elit</strong>. pretium ornare est.</p></blockquote> <script> if(document.querySelectorAll){ var em = document.querySelectorAll("em"); //alert(em.length); //1 var strongs = document.querySelectorAll("p strong"); alert(strongs.length);//2 }else{ alert("Not Supported QuerySelectorAll"); } </script> </body>
要取得返回的NodeList中的每一个元素,可以使用item()方法,也可以使用方括号语法。比如:
<script> if(document.querySelectorAll){ var strongs = document.querySelectorAll("p strong"); for(var i=0,len = strongs.length;i<len;i++){ strongs[i].className = "important"; } }else{ alert("Not Supported QuerySelectorAll"); } </script>
如果要使用这个方法,做好编写一个包装函数。
<script> function matchesSelector(element,selector){ if(element.matchesSelector){ return element.matchesSelector(selector); }else if(element.msMatchesSelector){ //IE 9+ return element.msMatchesSelector(selector); }else if(element.mozMatchesSelector){ //firefox return element.mozMatchesSelector(selector); }else if(element.webkitMatchesSelector){ //Chrome return element.webkitMatchesSelector(selector); }else{ throw new Error("Not supported.") ; } } if(matchesSelector(document.body,"body.page1")){ alert("It‘s the page1!"); } </script>
2.Element Traversal 规范,元素遍历
对与元素间的空格,IE9及之前版本不会返回文本节点,而其他浏览器都会返回文本节点。这就导致了在使用childNodes 和 firstChild 等属性时的行为不一致。为了弥补这一差异,而同时又保持DOM规范不变,Element Traversal规范新定义了一组属性。
Element Traversal API 为DOM 元素添加了以下5个属性:
标签:des style blog http color io os 使用 java
原文地址:http://www.cnblogs.com/yanyangbyou/p/3968757.html