Page 24 - JavaScript修炼之道
P. 24

任务4 获得DOM元素的引用              11


                   通过ID属性获得对应的元素


                   document.getElementById('elementId')      // 原始的W3C DOM
                   $('elementId')                            //  Prototype, MooTools
                   $('#elementId')                           //  jQuery
                   Y.one('#elementId')                       //  YUI3
                   dojo.byId('elementId')                    // Dojo
                   Ext.getDom('elementId')                   // Ext JS3

                   通过XPath/CSS选择来获得元素

                   不同的库所支持的语法可能会有所差异,W3C选择器API只在最新的浏览器中可用(不过
               其速度相当快),这些浏览器包括:Firefox 3.1+、Safari 3.1+、IE8+(标准模式)、Chrome以及
               Opera 10+。

                   还需要注意的是,这些库都提供了一些途径来指定上下文,也就是作为搜索起点的根节点(默
               认是整个文档)。尽可能缩小上下文的范围,以争取更快的执行速度和更小的内存占用。

                   document.querySelectorAll('selectors')     // Native(如上)
                   $$('selectors')                           //  Prototype, MooTools
                   someRootElement.select('selectors')       // Prototype
                   $('selectors')                            //  jQuery
                   Y.all('selectors')                        //  YUI 3
                   dojo.query('selectors')                   // Dojo
                   Ext.query('selectors')                    // Ext JS 3
                   元素间移动(遍历DOM)

                   下面的例子基于Prototype,如果需要这个例子的上下文和额外的信息,请阅读左页。


                   // 从具有指定id属性的元素开始,到达最近的class属性为category的<h2>元素
                   // 然后遍历这个元素的兄弟元素直到遇到一个class属性为summary的元素
                   $('someDeeplyNestedElement').up('h2.category').next('.summary');

                   // 找到带有名为sifr的CSS class的元素
                   // 设置这些元素的直接容器的CSS文本缩进属性
                   $$('a.sifr').invoke('up').invoke('setStyle', 'text-indent: -9999px');
   19   20   21   22   23   24   25   26   27   28   29