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 query 库相关推荐

  1. dojo 学习笔记之dojo.query - query(id) 与query(class)的差别

    考虑这个样例:动态创建一个页面的时候,用new listtem()生成多个listitem, 且每一个listitem中都生成一个按钮button. 假设想要给每一个按钮都绑定一个click事件,用d ...

  2. dojo使用query dojo/query

    要使用query,就要引入dojo/query包. query可以根据Dom里节点的标签名.id名.class名来检索一个或多个节点. -------------------------------- ...

  3. 使用 dojo/query

    在本篇文章中,我们将了解DOM的查询以及如何运用dojo/query这个模块来轻松地选择节点并操作他们. 入门指南 在操作DOM的过程中,如何快速高效地检索出DOM节点显得相当重要.我们在Dojo D ...

  4. Dojo学习笔记(一):Hello Dojo!

    欢迎来到Dojo世界!在这篇文章中你将会学习到如何加载Dojo以及探索Dojo的一些核心功能.你还会了解Dojo的基于AMD的模块架构,探索如何加载额外的模块来增加功能到您的Web站点或应用程序,并找 ...

  5. Dojo API中文 Dojo内容模块概览,初学者

    官网:http://dojotoolkit.org/reference-guide/1.10/dojo/index.html#dojo-dojo的翻译 dojo 内容: dojo dojo/dojo ...

  6. Hello Dojo!(翻译)

    http://dojotoolkit.org/documentation/tutorials/1.10/hello_dojo/index.html 欢迎学习DOJO!在本教程中,你将学些到如何加载DO ...

  7. dojo框架的基本认识

    最近复用十几年前的一个项目,里面用到了dojo框架,so总结一下这个框架的一些重要的知识点 简介 Dojo的全称是Dojo Toolkit,始创于2004年,是当时各种蓬勃发展的JS工具包中的佼佼者. ...

  8. 地理信息系统(GIS)系列——Dojo 基础

    1.Dojo 简介 Dojo 简介 Dojo 是一个 JavaScript 实现的开源 DHTML 工具包.它是在几个项目捐助基础上建立起来的(nWidgets,f(m),Burstlib).Dojo ...

  9. web前端之dojo(用javascript语言实现的开源DHTML工具包)

    web前端之dojo(用javascript语言实现的开源DHTML工具包) 一.开始Dojo开发 1.Dojo Toolkit 简介 Dojo 于 2004 年创建,使开发 DHTML 和 Java ...

最新文章

  1. Python matplotlib 绘制散点图 还不收藏起来
  2. 静态路由_在Android中模拟静态方法:让我们总结一下
  3. fasttext的异步随机梯度下降导致结果不一致
  4. oracle 主键删除,联合主键的创建
  5. 这本免费小书,带你征服 GitHub!
  6. (计算机组成原理)第三章存储系统-第七节2:页式/段式虚拟存储器
  7. centos7 安装 openssl和openssl升级
  8. Flink 新一代流计算和容错——阶段总结和展望
  9. 《托马斯大学微积分》习题1.4——31
  10. UE4 坐标系坐标轴旋转轴
  11. 服务器dns劫持修复,电脑DNS被劫持怎么修复 电脑dns被劫持解决方法
  12. 分布图用什么软件制作,公司区域分布图怎么做
  13. Python序列 数据类型 创建方式 Tuple元组 Str字符串 List列表 dict字典 Set集合 range,zip,map,enumerate
  14. 三分钟搞明白Java内存分布,再也不怕了!!!
  15. 数学建模方法-灰色预测
  16. OSChina 周四乱弹 ——00后让别人给自己网购女朋友
  17. 知乎采集手机,轻松搞定信息收集
  18. 最优化建模、算法与理论(二)—— 典型优化问题
  19. mysql数据库的数据目录
  20. 华为Vo5G技术EPSFB

热门文章

  1. django【orm操作】
  2. ZT 为什么Java中继承多数是有害的?
  3. 利刃 MVVMLight 1:MVVMLight介绍以及在项目中的使用
  4. 《信息安全系统设计基础》实验四 外设驱动程序设计
  5. 关于CXF的FrontEnd和数据绑定方案
  6. 第三次作业(词频统计及其效能分析)
  7. firewalld的防火墙
  8. springcloud的config
  9. 关于正则表达式的那些个爱恨情仇
  10. 降低成本,提高生产力—8句话讲清RPA的部署