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/request`和` dojo/io-query`为处理GET和POST请求提供了丰富的工具,并支持JSON、XML等多种数据格式。这使得与后端服务的通信变得更加高效和灵活。配合Dojo的模块化机制,开发者可以轻松地将异步请求集成到大型...
例如,`dojo/query`用于选择DOM元素,`dojo/on`用于监听事件。 3. **dojo/ready**:这个模块用于确保DOM加载完成后再执行指定的函数,它是Dojo中的一个实用工具,常用于页面初始化。 4. **dojo/store**:这是一个...
《dojo中文文档-dojo手册》提供了全面而深入的Dojo框架知识,这是一份非常有价值的资源,对于想要理解和掌握Dojo JavaScript库的开发者来说至关重要。Dojo是一个强大的JavaScript工具包,它提供了丰富的功能,包括...
3. **DOM操作**:Dojo 的`dojo.query`和`dojo.byId`等方法提供了强大的DOM元素选择和操作功能,类似于jQuery的选择器,使得对HTML元素的操作变得更加简单。 4. **AJAX与数据绑定**:`dojo.xhr`系列函数提供了异步...
5. **DOM操作 (dojo.query and dojo.place)**:Dojo 提供了强大的DOM操作工具,如`dojo.query`可以像jQuery一样选择DOM元素,而`dojo.place`则可以方便地在文档中移动或插入元素。 6. **事件处理 (dojo.connect)**...
Dojo 是一个强大的JavaScript工具库,它为开发者提供了丰富的功能,包括对Array对象的处理。在Dojo中,数组操作是一大亮点,因为它们提供了一系列高效且易用的方法,使得处理数组变得更加便捷。 首先,`dojo....
* dojox.collections:集合数据结构库,提供了 List、Query、Set、Stack、Dictionary 等功能。 * dojox.encoding:加密功能的 API,支持 Blowfish、MD5、Rijndael、SHA 等加密算法。 * dojox.math:数学函数库,提供...
Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,包括DOM操作、AJAX通信、动画效果、模块管理和MVC框架等。在这个小例子中,我们将深入理解Dojo的核心概念,并通过实践来熟悉其用法。 1. *...
Dojo的DOM操作库提供了一组高效且易于使用的API,如`dojo/query`用于选择元素,`dojo/dom`用于获取和设置元素属性,`dojo/dom-geometry`用于获取元素的位置和尺寸,以及`dojo/dom-class`和`dojo/dom-style`用于处理...
Dojo还强调性能优化,例如它的`dojo/query`类似jQuery的选择器,但设计时考虑了在大型文档中的效率。此外,`dojo/_base/fx`和`dojo/fx/Toggler`提供了动画效果支持,使开发者能够创建流畅的用户交互。 在数据管理和...
Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,支持MVC模式、数据绑定、模块化代码管理等。`dojo-release-1.12.2`是Dojo框架的一个特定版本,发布于2017年,为开发者提供了稳定且功能完备...
Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,涵盖了从DOM操作、事件处理到AJAX通信、动画效果等各个方面。在"dojo开发文档"中,我们可以深入学习Dojo的核心特性和使用方法,提升我们的...
4. **dojo/query**: 类似于jQuery的选择器,用于选取DOM元素,支持CSS选择器语法。 5. **dojo/NodeList**: 一组DOM节点的集合,提供了一系列操作这些节点的方法。 6. **dojo/fx**: 提供了动画效果和转换功能,可以...
- `dojo/query`:类似jQuery的选择器,用于查找DOM元素。 2. **Dojo模块加载机制**: - AMD(Asynchronous Module Definition)是Dojo引入的一种模块加载方式,它允许异步加载模块,提高页面加载速度。 - `dojo/...
这些API可能包括了dojo.query(用于查询DOM元素)、dojo.fx(动画效果)、dojo.data(数据存储)等。中文注解使得理解这些API的功能和用法更加容易,帮助开发者快速上手并有效利用Dojo进行项目开发。 学习Dojo,你...
《Dojo权威指南》是一本深入探讨Dojo JavaScript库的专著,旨在帮助开发者全面掌握这一强大的工具集。Dojo是开源的JavaScript框架,它提供了一系列功能,包括UI组件、AJAX交互、数据管理、模块化开发等,适用于构建...
4. **DOM操作**:`dojo/dom`和`dojo/query`模块提供了对HTML元素的选取和操作。`dojo/dom-construct`和`dojo/dom-style`则分别处理元素的创建和样式修改。 5. **事件处理**:`dojo/on`(在1.4.2版本中可能是`dojo/...
在JavaScript DOM操作方面,《精通Dojo》会讲解Dojo的query函数和NodeList对象,它们提供了类似于jQuery的选择器和操作方法,使得DOM遍历和修改变得简单易行。此外,还会涉及Dojo的事件处理机制,如connect和on函数...
除此之外,Dojo 还有强大的工具集,如`dojo/query`用于DOM查询,类似于jQuery的选择器;`dojo/dom-geometry`用于获取和设置元素的位置和尺寸;`dojo/on`用于事件监听等。 在Dojo 1.9中,值得注意的一个变化是Dojo ...
2. **DOM操作**:Dojo提供了`dojo/dom`和`dojo/query`模块,用于选择和操作DOM元素,类似于jQuery的功能,但更注重性能和跨浏览器兼容性。 3. **事件处理**:Dojo的`dojo/on`模块提供了一种简单的方式来监听和处理...