`

Dojo query 库

 
阅读更多

Dojo Query 库的核心是一个 dojo.query 函数,该函数接收一个查询字符串,以及一个可选的 DOM 节点作为参数,返回一个 NodeList 对象。一方面我们可以通过 id,元素名称,属性,CSS 等及其组合设置精巧的查询字符串准确控制返回的结果,另一方面返回的 NodeList 对象提供了丰富的操作接口,对其调用的很多方法(如 addClass)都可以直接作用于所有的元素,并且支持链式调用。如下面的例子:

 

dojo.query("div.someClassName").style("backgroundColor","gray").forEach("item.disabled= true;");

首先在 DOM 根结点查询 class 为“someClassName”的 div 元素,对于返回的所有元素,将 style 属性“backgroundColor”设置为“gray”,然后将元素的“disabled”属性设置为“true”。

dojo.query("img"); //查询页面所有的img 标签
dojo.query("h1,h2,h3"); //查询页面所有的h1 ha2 h3 标签
dojo.query("#widget123"); //查询id 为widget123的元素
dojo.query(".offToSeeTheWij"); 查询class=offToSeeTheWij的所有元素
dojo.query("p:first-child");  //利用 first-child 来查询任意节点下的首个 p 子元素
 //下列代码就是分别用来查询 name 属性的取值以“item”打头,以“item”结尾,和包含“item”字样的元素的:
dojo.query("[name^=item]"); 
dojo.query("[name$=item]");
dojo.query("[name*=item]");

 

上面我们看到的有关于 Dojo Query 的例子都只接受一个参数,它们实现的是在全局范围内,即整个页面范围内,对节点进行查询。Dojo Query 还支持局部范围内的相对查询。此时,除了查询表达式外,我们需要传入另一个参数,用以指示查询起始的根节点。该参数可以是一个字符串,Dojo Query 会将其视作元素的 id 值;或者我们也可以传入一个 DOM 节点。

<html> 
 <head> 
 <script type="text/javascript" src="../js/dojo/dojo.js"></script> 
 <script type="text/javascript"> 
     dojo.addOnLoad(function() { 
         console.debug(dojo.query("button").length);  // 输出"3"
         console.debug(dojo.query("button", "thisForm").length);  // 输出”1”
    }); 
 </script> 
 </head> 
 <body> 
   <button id="b1" /> 
   <button id="b2" /> 
   <form id="thisForm" > 
      <button id="formB" /> 
   </form> 
 </body> 
 </html>

 

对查询结果进行后续操作

通过以上章节的介绍,我们知道,Dojo Query 返回的结果是 NodeList 对象。NodeList 是一个扩展的 Array 对象,它提供了丰富的操作接口方法。基本而言,NodeList 提供了几乎所有操作 DOM 的方法,且简单易用;因为它本身是 Array 对象,所以它支持所有的 Dojo 对数组的操作方法;同时,它也提供了很多直接处理事件的方法。而且,NodeList 还有一个显著的优点,就是很多方法支持链式调用。所谓链式调用,是指 NodeList 的方法调用之后仍会返回当前的对象,可以通过“.”级联继续应用其他的操作,例如 :

 

dojo.query(".thinger ").style {border :"1px" }).removeClass("thinger").addClass("thinger2");

 

作为 Array 对象,NodeList 具有长度属性,而且可以通过 at,forEache,push,pop 这些方法来操纵它。需要注意的是 at,map,forEach,slice,splice,contact 等都可以进行链式调用,但是 push,pop,shift 和 unshift 则是不可以的。

forEach方法

dojo.query("div").forEach(function(node, index, array){ 
    node.innerHTML = "new version content!"; 
 });
// try 	
var elementB= dojo.query("#"+inputStr).parents(".classA").first();
var elementC= dojo.query(elementB).parent(".classB").first();
function displayIcon(node,type){
	dojo.query(node).children("a").children("img").forEach(function(img,index,nodeList){
		dojo.attr(img,"src","images2/expanded.gif");
				}
			

 

分享到:
评论

相关推荐

    dojo-release-1.9.0-src.zip dojo javascript库源码

    Dojo 是一个强大的JavaScript工具包,它为Web开发提供了丰富...例如,`dojo/request`和`dojo/io-query`可以帮助你处理GET和POST请求,同时支持JSON、XML等多种数据格式。 动画效果在Dojo中由`dojo/fx`和`dojo/animati`

    dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程

    例如,`dojo/query`用于选择DOM元素,`dojo/on`用于监听事件。 3. **dojo/ready**:这个模块用于确保DOM加载完成后再执行指定的函数,它是Dojo中的一个实用工具,常用于页面初始化。 4. **dojo/store**:这是一个...

    dojo中文文档-dojo手册

    《dojo中文文档-dojo手册》提供了全面而深入的Dojo框架知识,这是一份非常有价值的资源,对于想要理解和掌握Dojo JavaScript库的开发者来说至关重要。Dojo是一个强大的JavaScript工具包,它提供了丰富的功能,包括...

    dojo 1.0.1 库

    3. **DOM操作**:Dojo 的`dojo.query`和`dojo.byId`等方法提供了强大的DOM元素选择和操作功能,类似于jQuery的选择器,使得对HTML元素的操作变得更加简单。 4. **AJAX与数据绑定**:`dojo.xhr`系列函数提供了异步...

    dojo起步学习的好例子

    5. **DOM操作 (dojo.query and dojo.place)**:Dojo 提供了强大的DOM操作工具,如`dojo.query`可以像jQuery一样选择DOM元素,而`dojo.place`则可以方便地在文档中移动或插入元素。 6. **事件处理 (dojo.connect)**...

    Dojo的Array处理

    Dojo 是一个强大的JavaScript工具库,它为开发者提供了丰富的功能,包括对Array对象的处理。在Dojo中,数组操作是一大亮点,因为它们提供了一系列高效且易用的方法,使得处理数组变得更加便捷。 首先,`dojo....

    dojo api 中文版

    * dojox.collections:集合数据结构库,提供了 List、Query、Set、Stack、Dictionary 等功能。 * dojox.encoding:加密功能的 API,支持 Blowfish、MD5、Rijndael、SHA 等加密算法。 * dojox.math:数学函数库,提供...

    dojo 一个小的例子

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,包括DOM操作、AJAX通信、动画效果、模块管理和MVC框架等。在这个小例子中,我们将深入理解Dojo的核心概念,并通过实践来熟悉其用法。 1. *...

    dojo实战+实用例子

    Dojo的DOM操作库提供了一组高效且易于使用的API,如`dojo/query`用于选择元素,`dojo/dom`用于获取和设置元素属性,`dojo/dom-geometry`用于获取元素的位置和尺寸,以及`dojo/dom-class`和`dojo/dom-style`用于处理...

    精通Dojo 随书源码

    Dojo还强调性能优化,例如它的`dojo/query`类似jQuery的选择器,但设计时考虑了在大型文档中的效率。此外,`dojo/_base/fx`和`dojo/fx/Toggler`提供了动画效果支持,使开发者能够创建流畅的用户交互。 在数据管理和...

    dojo-release-1.12.2

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,支持MVC模式、数据绑定、模块化代码管理等。`dojo-release-1.12.2`是Dojo框架的一个特定版本,发布于2017年,为开发者提供了稳定且功能完备...

    dojo开发文档

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,涵盖了从DOM操作、事件处理到AJAX通信、动画效果等各个方面。在"dojo开发文档"中,我们可以深入学习Dojo的核心特性和使用方法,提升我们的...

    Dojo相应的jar包

    4. **dojo/query**: 类似于jQuery的选择器,用于选取DOM元素,支持CSS选择器语法。 5. **dojo/NodeList**: 一组DOM节点的集合,提供了一系列操作这些节点的方法。 6. **dojo/fx**: 提供了动画效果和转换功能,可以...

    Dojo 1.10版离线参考手册

    - `dojo/query`:类似jQuery的选择器,用于查找DOM元素。 2. **Dojo模块加载机制**: - AMD(Asynchronous Module Definition)是Dojo引入的一种模块加载方式,它允许异步加载模块,提高页面加载速度。 - `dojo/...

    dojo练习

    这些API可能包括了dojo.query(用于查询DOM元素)、dojo.fx(动画效果)、dojo.data(数据存储)等。中文注解使得理解这些API的功能和用法更加容易,帮助开发者快速上手并有效利用Dojo进行项目开发。 学习Dojo,你...

    Dojo权威指南源代码

    《Dojo权威指南》是一本深入探讨Dojo JavaScript库的专著,旨在帮助开发者全面掌握这一强大的工具集。Dojo是开源的JavaScript框架,它提供了一系列功能,包括UI组件、AJAX交互、数据管理、模块化开发等,适用于构建...

    dojo官网的源码dojo官网的源码

    4. **DOM操作**:`dojo/dom`和`dojo/query`模块提供了对HTML元素的选取和操作。`dojo/dom-construct`和`dojo/dom-style`则分别处理元素的创建和样式修改。 5. **事件处理**:`dojo/on`(在1.4.2版本中可能是`dojo/...

    精通Dojo(中文版)

    在JavaScript DOM操作方面,《精通Dojo》会讲解Dojo的query函数和NodeList对象,它们提供了类似于jQuery的选择器和操作方法,使得DOM遍历和修改变得简单易行。此外,还会涉及Dojo的事件处理机制,如connect和on函数...

    dojo开发帮助文档

    除此之外,Dojo 还有强大的工具集,如`dojo/query`用于DOM查询,类似于jQuery的选择器;`dojo/dom-geometry`用于获取和设置元素的位置和尺寸;`dojo/on`用于事件监听等。 在Dojo 1.9中,值得注意的一个变化是Dojo ...

    dojo-release-1.0.2

    2. **DOM操作**:Dojo提供了`dojo/dom`和`dojo/query`模块,用于选择和操作DOM元素,类似于jQuery的功能,但更注重性能和跨浏览器兼容性。 3. **事件处理**:Dojo的`dojo/on`模块提供了一种简单的方式来监听和处理...

Global site tag (gtag.js) - Google Analytics