什么是DOM(Document Object Model)?这个看前面的html-DOM
这里简要概述
- W3C对DOM的定义:文档对象模型是一个平台,一个中立于语言的应用程序编程接口(API),允许程序访问并更改文档的内容、结构和样式。
- 其实DOM是一种通用的模型,不止在HTML中存在,也可以在其他文件中存在,如XML
- DOM的发展也非常漫长,版本延续,产生了0级DOM、1级DOM、2级DOM和最新的3级DOM,相对成熟的就是从2级DOM以后。
- 节点Node,对于nodeType、nodeName、nodeValue、getAttribute等等。
对DOM模型的操作:
DOM的访问:
- document.getElementById、document.getElementsByTagName、document.getElementsByName、innerHTML、innerText等方式去访问DOM元素
DOM的CRUD:
- createElement、parentNode、childNodes、appendChild、removeChild、replaceChild、insertBefore、firstChild、previousSibling等等
对于DOM的样式:
- 只需要给节点添加一个style属性,就可以操作该节点的样式,或者处罚事件改变样式,又或者根据需求操作DOM变换不同的动画效果等等。这都离不开style属性
Ext之DOM
- Ext中使用了三个核心的工具类对我们掌握的DOM进行了完美的封装:
- Ext.Element(几乎对DOM的一切进行了彻底封装)
- Ext.DomHelper(是一个强大的操控UI界面的工具类)
- Ext.DomQuery(用来进行DOM节点查询)
Ext.Element这个类是Ext封装底层HTML的最核心的类了。
Ext.Element常用方法:两个最有名的函数:Ext.get和Ext.fly两个函数,一个方法使用了缓存机制来提升获取DOM节点的效率,而另一个方法则使用了javaScript经典的‘享元模式’来提升效率,从而节约内存。
- Ext.get(Ext.Element.get)
- Ext.fly(Ext.Element.fly)
- Ext.getDom
页面代码:
<body> <input type="button" id="btn" value="点击" > <br> <div id="d1" align="center">我是d1</div> <div id="d2" align="center">我是d2</div> <div id="d3" align="center">我是d3</div> </body>
//Ext.dom.Element //Ext.get 使用了缓存机制来提升获取DOM节点的效率,返回的是Ext.Element var d1 = Ext.get('d1'); //get方法的描述: /** * 1、首先去Ext.cache缓存里去找,如果缓存里有,直接返回即可 * 2、如果缓存里没有,再去页面上查找,如果页面里没有,返回null * 3、如果页面有,把当前内容加入到缓存中:{id:{data/events/dom}} * 4、Ext.addCacheEntry加到缓存的方法 */ alert(d1.innerHTML); //alert undefined,因为d1是一个Ext.Element对象,Ext.Element没有innerHTML alert(d1.dom.innerHTML); //alert 我是d1 //Ext.fly /** * 使用了享元模式 * 返回的对象:Fly对象(可以认为是Ext封装好的Ext.Element对象) * 注意点:fly由于内部使用了享元模式,所以,只适合一次操作,从而节省内存 */ var d2 = Ext.fly('d2'); d2.dom.innerHTML = 'dadadad'; var d3 = Ext.fly('d3'); d3.dom.innerHTML = 'bbbbbbbbb'; /** var d2 = Ext.fly('d2'); var d3 = Ext.fly('d3'); d2.dom.innerHTML = 'dadadad'; d3.dom.innerHTML = 'bbbbbbbbb'; 上述代码只改变最后一个赋值 */ //Ext.getDom var dom = Ext.getDom('d3'); //HTML Element dom.innerHTML = 'dddddssssssss'; });
获取元素的总结:
- Ext.get比较消耗内存,尽量避免使用。
- Ext.fly虽然比较省内存,但是只能被使用一次
- Ext.getDom非常适合直接获取页面元素,并返回的就是DOM元素,如果你想操作DOM元素的属性,这个方法是最好不过的。
Ext.dom.Element的查询系方法:
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title:'我的面板', width:'100%', height:400, renderTo:Ext.getBody(), html:'<div id=d1><span id=sp>我是sp内容</span><div id=d2>我是d2内容</div></div>' }); //查询系最常用的方法: //Ext.dom.Element get fly getDom var d1 = Ext.get('d1'); var sp = Ext.get('sp'); //查询系方法: //1、contains:判断元素是否包含另一个元素 /** alert(d1.contains(sp)); //alert true alert(d1.contains('sp')); */ //2、child:从元素的直接子元素中选择与选择符匹配的元素,返回的只是一个元素,不返回数组 //两个参数,第二个参数如果为true表示取得的是原生的HTMLElement元素 /** var ch = d1.child('span',true); //child('span')返回Ext.dom.Element ,child('span',true)返回HTMLDom // alert(ch.dom.innerHTML);//会出错,应该直接alert(ch.innerHTML) alert(ch.innerHTML) */ //3、down:选择与选择符匹配的元素的子元素 /** var ch1 = d1.down('#d2'); alert(ch1.dom.innerHTML); */ //4、first:选择元素的第一个子元素 /** var f1 = d1.first(); alert(f1.dom.innerHTML); //alert 我是sp内容 var f2 = d1.first('div'); alert(f2.dom.innerHTML);//alert 我是d2内容 */ //5、findParent:查找与简单选择符匹配的元素的父元素,返回原生的HTMLElement元素 /** var parent = sp.findParent('div'); // alert(parent.innerHTML); */ //6、findParentNode .up:查找与简单选择符匹配的元素的父元素 //7、is:判断元素是否匹配选择符 /** alert(d1.is('div')); */ //8、last:选择元素的最后一个子元素 //9、next:选择元素同层的下一个元素 //10、prew:选择元素同层的上一个元素 /** var next = sp.next(); alert(next.dom.nodeName); */ //11、parent:返回元素的父元素 //12、Ext.query:根据选择符获取元素 (还有一个Ext.dom.Element.query) /** var arr = Ext.query('span'); //HTMLElment[] 从document根开始查找 Ext.Array.each(arr,function(item){ alert(item.innerHTML); }); */ /** var arr1 = Ext.query('span','d1'); //HTMLElment[] 从d1开始查找 Ext.Array.each(arr1,function(item){ alert(item.innerHTML); }); */ //13、Ext.select/Ext.dom.Element.select:根据选择符获取元素集合 //返回的都是元素集合:Ext.dom.CompositeElement(集合中元素是Ext.dom.Element)/Ext.dom.CompositeElementLite(集合中元素是HTMLElement) //参数说明:3个参数 //1:selector 选择器(不要使用id选择器) ; //2:返回的集合对象(boolean false:Ext.dom.CompositeElementLite true:Ext.dom.CompositeElement) //3:指定的根节点开始查找 var list = Ext.select('span',false,'d1'); //Ext.dom.CompositeElementLite Ext.Array.each(list.elements,function(el){ alert(el.innerHTML); }); var list2 = Ext.select('span',true,'d1'); //Ext.dom.CompositeElement Ext.Array.each(list2.elements,function(el){ alert(el.dom.innerHTML); }); });
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title:'我的面板', width:'100%', height:400, renderTo:Ext.getBody(), html:'<div id=d1><span id=sp>我是sp内容</span><div id=d2>我是d2内容</div></div>' }); //DOM操作系方法 var d1 = Ext.get('d1'); var sp = Ext.get('sp'); //1、appendTo:将当前元素追加到指定元素中(这两个元素都必须存在在document里) // sp.appendTo(Ext.get('d2')); //2、appendChild:在当前元素中追加元素 // sp.appendChild('d2'); //3、createChild:在当前元素中插入由DomHelper对象创建的元素 /** sp.createChild({ tag:'ol', children:[ {tag:'li',html:'tem1'}, {tag:'li',html:'ite2'} ] }); */ //4、insertAfter:将元素插入到指定元素之后 //5、insertBefore:将元素插入到指定元素之前 //6、insertSibling:在当前元素前或后插入(或创建)元素(同层) //7、insertHtml:在当前元素内插入HTML代码 //8、remove:移除当前元素 // sp.remove(); //9、replace:使用当前元素替换指定元素 //10、replaceWith:使用创建的元素替换当前的元素 //11、wrap:创建一个元素,并将当前元素包裹起来。 // sp.wrap('<h1></h1>'); //操作样式系的方法 //1、addCls:增加CSS样式到元素,重复的样式会自动过滤 // sp.addCls('red'); //2、applyStyles:设置元素的style属性 // sp.applyStyles('backgroundColor:blue'); // sp.applyStyles({backgroundColor:'yellow'}); //3、setStyle:为元素设置样式 // sp.setStyle('backgroundColor','green'); // sp.setStyle('fontSize','40px'); //4、getStyle:放回元素的当前样式和计算样式 // alert(sp.getStyle('fontSize')); // alert(Ext.encode(sp.getStyle(['fontSize','backgroundColor']))); //5、getStyleSize:返回元素的样式尺寸 // alert(Ext.encode(sp.getStyleSize())); //6、setOpacity:设置不透明 // var d2 = Ext.get('d2'); // d2.setStyle('backgroundColor','red'); // d2.setStyle('width','200px'); // d2.setStyle('height','200px'); // d2.setOpacity(.3); //0~1 //7、clearOpacity:清理不透明度设置 //8、getColor:返回CSS颜色属性的值,返回值为6位数组的16进制颜色值 //9、boxWrap:使用box.Markup定义的HTML代码包装元素 //10、addClsOnClick 添加样式当点击该元素的时候 // var d2 = Ext.get('d2'); // d2.addClsOnClick('red'); //11、addClsOnOver 添加样式当鼠标移动到元素上的时候 // var d2 = Ext.get('d2'); // d2.addClsOnOver('red'); //12、getMargin :返回值具有top、left、right、bootom属性的对象,属性值为响应的元素margin值 // var d2 = Ext.get('d2'); // alert(d2.getMargin('r')); // alert(Ext.encode(d2.getMargin())); //13、removeCls:删除元素的样式 // var d2 = Ext.get('d2'); // d2.addCls('red'); //参数String/String[] className // d2.removeCls('red'); //参数String/String[] className //14、replaceCls:替换元素的样式 //15、set:设置元素属性 //16、radioCls:为当前元素添加样式,并删除其兄弟节点的元素 //17、unituzeBox:将表示margin大小的对象转换为字符串 //对齐系操作方法: //alignTo:将当前元素对齐到另外一个元素。定位位置的选择是基于所对齐的元素的位置 //(9个定位点tl、t、tr、l、c、r、bl、b、br)。 //anchorTo:当窗口调整大小时,将当前元素锚到指定元素并重新调整 //removeAnchor:移除当前元素的任何锚定位 //尺寸大小操作系方法 //setHeight:设置元素宽度 //setWidth:设置元素高度 //setSize:设置元素大小 //clip:存储元素当前的overflow设置并裁剪溢出。 //unclip:在clip被调用前将裁剪值(溢出)还原为原始值 //getDocumentWidth:返回文档宽度 //getDocumentHeight:返回文档高度 //getFrameWidth:返回合计了padding和border的宽度 //getHeight:返回offsetHeight值 //getWidth:返回offsetWidth值 //getPadding:返回padding的宽度 //getSize:返回元素的大小 //getTextWidth:返回文本宽度 //getViewportHeight:返回窗口的可视高度 //getViewportWidth:返回窗口的可视宽度 //getViewSize:返回元素可以用来放置内容的区域大小 //getBorderWidth:返回边界宽度 //getComputeWidth:返回计算出来的CSS宽度 //getComputeHeight:返回就算出来的CSS高度 //isBorderBox:主要用于检测盒子模型,与IE6、7有关 var d2 = Ext.get('d2'); alert(Ext.encode(d2.getSize())); //定位系方法 //clearPositioning:当文档加载完成后,清理定位回到默认值 //fromPoint: //getBottom:返回右下角的Y坐标 //getBox:返回一个包含元素位置的对象,对象包括元素左上角的坐标值、右下角的坐标值、宽度和高度 //getCenterXY:返回元素的当前坐标 //getLeft:返回一个包含元素位置的对象 //getPositionging:返回一个包含CSS位置属性的对象 //getRegin:返回元素所在区域 //getRight:返回元素的右边X坐标 //getTop:返回元素顶部Y坐标 //getViewRegion:返回元素的内容区域 //getX:返回元素当前的X坐标 //getY:返回元素当前的Y坐标 //getXY:返回元素当前的XYzuobiao //move:移动元素 //moveTo:将元素移动到指定的XY坐标上 //position:初始化元素的位置 //setBottom:设置元素的bottom样式 //setBounds:设置元素的位置和大小 //setBox:设置元素的位置大小 //setLeft:设置元素坐标的X坐标 //setRight:设置元素right的样式值 //setLeftTop:设置元素左上角坐标 //setLocation:设置元素位置 //setTop:设置元素的顶部Y坐标 //setX、setY、setXY:设置元素的X、Y、XY坐标位置 //translatePoints:转换元素的页面坐标为CSS的left和top值 //滚动系方法 //getScroll:返回元素当前滚动条的位置 //isScrollable:如果元素允许滚动,则返回true //scroll:滚动到指定位置 //scrollIntoView:将元素滚动到指定容器的可视区域 //scrollTo:将元素滚动到指定的位置 });
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title:'我的面板', width:'100%', height:400, renderTo:Ext.getBody(), html:'<div id=d1><span id=sp>我是sp内容</span><div id=d2>我是d2内容</div></div><input id=inp value=123 /><form id=f1><input name=uname value=ddd /><input name=pwd value=123 /></form>' }); //DOM操作系方法 var d1 = Ext.get('d1'); var sp = Ext.get('sp'); //常用事件方法:为元素添加事件 //1、addKeyMap:为元素创建一个KeyMap对象 /** var inp = Ext.get('inp'); inp.addKeyMap({ //Ext.util.KeyMap ==========>对象class key:Ext.EventObject.A, //Ext.EventObject ctrl:true, fn:function(){ alert('按ctrl + A,执行'); }, scope:this }); */ //2、addKeyListener:为KeyMap绑定事件addKeyListener( key, fn, [scope] ) : Ext.util.KeyMap //参数说明: String/Number/Number[]/Object /** var inp = Ext.get('inp'); inp.addKeyListener({ key:Ext.EventObject.X, ctrl:false }, function(){ alert('x执行了') }, this ); */ //常用事件 //on:绑定事件 /** var inp = Ext.get('inp'); inp.on('click',function(){ alert('zhxingle'); }); inp.un('click'); //un:移除事件 */ //click:单击事件 //blur:失去焦点事件 //focus:获得焦点事件 /** var inp = Ext.get('inp'); inp.focus(); */ //其他重要且重要方法 //center:使元素居中 var inp = Ext.get('inp'); // inp.center(); //clean:清理空白的文本节点 //createShim:为元素创建一个iframe垫片保证选择或其他对象跨域时可见 //getLoader:返回ElementLoader对象 /** var loader = inp.getLoader(); //ElementLoader loader.load({ url:'base/03_js.jsp', //用到的jsp在下面定义 renderer:function(loader,response){ //把对象转换为字符串表示形式:Ext.encode //把一个字符串转换为javascript对象:Ext.decode var obj = Ext.decode(response.responseText); Ext.getDom('inp').value = obj.name; } }); */ //highlight:高亮显示特效 // sp.highlight(); //show、hide:显示隐藏元素 // var d2 = Ext.get('d2'); // d2.setStyle('width','100px'); // d2.setStyle('height','100px'); // d2.setStyle('backgroundColor','red'); // d2.show({duration:2000}); // d2.hide({duration:2000}); //ghost:元素移动特效 // d2.ghost('r',{duration:2000}); r,b,l,t //fadeIn、fadeOut:淡入淡出 //slideIn、slideOut:向上向下滑动 // d2.slideIn('r',{duration:2000}); //getValue:如果元素有value属性,返回其值 // alert(inp.getValue()); //normalize:将CSS属性中的连接符号去掉,例如将“font-size”转为fontSize这样 //load:直接调用ElementLoader的load方法为元素加载内容 //mask:遮罩当前元素,屏蔽用户操作 //unmask:移除遮罩 // Ext.getBody().mask('请稍等...'); // window.setTimeout(function(){ // Ext.getBody().unmask(); // },2000); // Ext.defer(function(){ // Ext.getBody().unmask(); // },2000); //repaint:强迫浏览器重新绘画元素 //serializeForm:序列化为URL编码的字符串 // alert(Ext.dom.Element.serializeForm('f1')); //update:更新元素的innerHTML属性 //unselectable:禁用文本选择 inp.unselectable(); });03_js.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> { name:'hahaha', age:10 }
如果想生成dom节点,不建议使用原生的方法去生成dom节点,原因是代码量比较大的时候性能比较低,其二是自己组装HTML字符串比较麻烦。在Ext里,DomHelper对象类似一个元素生成器,用于解决此类问题。一般的javascript框架底层都会有生成html代码的类似功能函数。
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title:'DomHelper-元素生成器的使用', width:'90%', height:400, renderTo:Ext.getBody(), html:'<div id=d1>我是d1</div>' }); //DomHelper常用方法 //1:createHtml或markup //配置项:tag:元素的名称 children/cn:表示子元素 cls:表示样式 html:文本内容 /** var html = Ext.DomHelper.createHtml({ tag:'ol', cn:[{tag:'li',html:'it1'}, {tag:'li',html:'it2'} ] }); console.info(html); //<ol><li>it1</li><li>it2</li></ol> //---------------------------------------------- var html = Ext.DomHelper.createHtml({ tag:'div', cn:[ {tag:'a',html:'zdzddzd',href:'www.sina.com'}, {tag:'input',value:'点击',type:'button'}] }); console.info(html); //<div><a href="www.sina.com">zdzddzd</a><input value="点击" type="button"/></div> */ //2:createDom方法(这个方法生成原生的dom节点,不推荐) /** var dom = Ext.DomHelper.createDom({ tag:'div', html:'我是div' }); console.info(dom); */ //3:append方法 /** Ext.DomHelper.append('d1',{ tag:'ul', cn:[ {tag:'li',html:'1111'}, {tag:'li',html:'2222'}] }); //-------------------------------------------------- Ext.DomHelper.append('d1','<span>span!!!!!</span>') */ //4:insertHtml方法,这个方法就是为了操作原生的node节点的 //参数说明:insertHtml( where, el, html ) String where HTMLElement/TextNode el String html // Ext.DomHelper.insertHtml('beforeEnd',Ext.getDom('d1'),'<h1>我是标题</h1>'); //beforeEnd,beforeBegin,afterEnd,afterBegin //5:overwrite方法 // Ext.DomHelper.overwrite('d1',{tag:'span',html:'我是覆盖span'}); //6:createTemplate方法 /** var tp = Ext.DomHelper.createTemplate('<h1>{text}</h1><h2>{text2}</h2>'); //return Ext.Template tp.overwrite('d1',{text:'我是被替换的内容',text2:'----我也是替换的内容!!'}); */ //7:applyStyles方法 Ext.DomHelper.applyStyles('d1',{ width:'100px', height:'100px', backgroundColor:'green' }); });Ext.dom.Query
这个类一共提供了8个方法,最常用的方法,就是Ext.query(Ext.dom.Query.select方法),这个方法的详细使用规则:
- 基本元素选择器
- id选择器
-css的类选择器
- 属性选择器
- 伪类选择器(也可以说是相当于JQ过滤选择器)
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title:'Ext.DomQuery实例', width:'500', height:400, renderTo:Ext.getBody(), html:'<ul><li>item1</li><li>item2</li></ul><div id=d1><span id=sp>我是sp</span><span class=mycolor>我是第二个span</span></div>' }); //Ext.dom.Query(Ext.DomQuery)Ext.dom.Queryselect ====Ext.query 返回HTMLElement[]原生元素集合 // 基本元素选择器 id选择器 css的类选择器 标签选择器(简单选择器) // 属性选择器 // 伪类选择器(也可以说是相当于JQ过滤选择器) //Ext.query('span') 返回整个文档的span标签 /** // var arr = Ext.query('span'); //没有指定root,从document根开始 var arr = Ext.query('span','d1'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //Ext.query('#id'); 根据id进行查询,但返回数组 /** var arr = Ext.query('#d1'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //Ext.query('.class'); 根据样式进行查询,返回数组 /** var arr = Ext.query('.mycolor'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //复杂选择器 //Ext.query('div span');根据标签进行包含选择器过滤 /** var arr = Ext.query('div span'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); //------------------------ var arr1 = Ext.query('div[id=d1] span'); Ext.Array.each(arr1,function(el){ alert(el.innerHTML); }); */ //Ext.query('*'); 匹配所有元素 // alert(Ext.query('*')); //Ext.query('E[attr=val]'); 进行一个属性的选择器 /** var arr1 = Ext.query('div[id]'); Ext.Array.each(arr1,function(el){ alert(el.id); }); */ //Ext.query('E>F'); 进行一个层次查找,父节点为E的F节点 /** var arr1 = Ext.query('div>span'); var arr2 = Ext.query('div/span'); //Xpath:div/span查找xml文件 Ext.Array.each(arr1,function(el){ alert(el.innerHTML); }); */ // 伪类选择器(也可以说是相当于JQ过滤选择器) //E:first-child var arr1 = Ext.query('li:first-child'); Ext.Array.each(arr1,function(el){ alert(el.innerHTML); }); });Ext.DomQuery的其他方法
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title:'Ext.DomQuery实例', width:'500', height:400, renderTo:Ext.getBody(), html:'<ul><li>item1</li><li>item2</li></ul><div id=d1><span id=sp>我是sp</span><span class=mycolor>我是第二个span</span></div>' }); //Ext.dom.Query(Ext.DomQuery)Ext.dom.Queryselect ====Ext.query 返回HTMLElement[]原生元素集合 // 基本元素选择器 id选择器 css的类选择器 标签选择器(简单选择器) // 属性选择器 // 伪类选择器(也可以说是相当于JQ过滤选择器) //Ext.query('span') 返回整个文档的span标签 /** // var arr = Ext.query('span'); //没有指定root,从document根开始 var arr = Ext.query('span','d1'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //Ext.query('#id'); 根据id进行查询,但返回数组 /** var arr = Ext.query('#d1'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //Ext.query('.class'); 根据样式进行查询,返回数组 /** var arr = Ext.query('.mycolor'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //复杂选择器 //Ext.query('div span');根据标签进行包含选择器过滤 /** var arr = Ext.query('div span'); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); //------------------------ var arr1 = Ext.query('div[id=d1] span'); Ext.Array.each(arr1,function(el){ alert(el.innerHTML); }); */ //Ext.query('*'); 匹配所有元素 // alert(Ext.query('*')); //Ext.query('E[attr=val]'); 进行一个属性的选择器 /** var arr1 = Ext.query('div[id]'); Ext.Array.each(arr1,function(el){ alert(el.id); }); */ //Ext.query('E>F'); 进行一个层次查找,父节点为E的F节点 /** var arr1 = Ext.query('div>span'); var arr2 = Ext.query('div/span'); //Xpath:div/span查找xml文件 Ext.Array.each(arr1,function(el){ alert(el.innerHTML); }); */ // 伪类选择器(也可以说是相当于JQ过滤选择器) //E:first-child /** var arr1 = Ext.query('li:first-child'); Ext.Array.each(arr1,function(el){ alert(el.innerHTML); }); */ //Ext.DomQuery其他方法 //jsSelect:根据选择符选择元素 //2、compile:将选择符或Xpath编译成一个可重复使用的函数 /** var fn = Ext.DomQuery.compile('span'); alert(fn); var arr = fn(Ext.getDom('d1')); Ext.Array.each(arr,function(el){ alert(el.innerHTML); }); */ //filter:使用简单选择符过滤元素数组 //参数:filter( el, selector, nonMatches ) : HTMLElement[] //el : HTMLElement[] selector : String nonMatches : Boolean /** var arr = document.getElementsByTagName('div'); var filterarr = Ext.DomQuery.filter(arr,'div[id=d1]',false); //false,选择出div的id=d1的,如果是true,选择出div的id!=d1的 Ext.Array.each(filterarr,function(el){ alert(el.id); }); */ //is:判断元素是否匹配简单选择符 alert(Ext.DomQuery.is(Ext.getDom('d1'),'div[id]')); //alert false });