码迷,mamicode.com
首页 > 其他好文 > 详细

Dojo------DOM基础之Query

时间:2016-07-28 16:20:52      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

使用DOM,最重要的是快速有效的检索节点

dojo/query模块检索一个节点列表,支持CSS3的选择器

一、查询

比如以下html:

 1 <ul id="list">
 2     <li class="odd">
 3         <div class="bold">
 4             <a class="odd">Odd</a>
 5         </div>
 6     </li>
 7     <li class="even">
 8         <div class="italic">
 9             <a class="even">Even</a>
10         </div>
11     </li>
12     <li class="odd">
13         <a class="odd">Odd</a>
14     </li>
15     <li class="even">
16         <div class="bold">
17             <a class="even">Even</a>
18         </div>
19     </li>
20     <li class="odd">
21         <div class="italic">
22             <a class="odd">Odd</a>
23         </div>
24     </li>
25     <li class="even">
26         <a class="even">Even</a>
27     </li>
28 </ul>
29 
30 <ul id="list2">
31     <li class="odd">Odd</li>
32 </ul>

 

dojo代码如下:

1 // require the query, dom, and domReady modules
2 require(["dojo/query", "dojo/dom", "dojo/domReady!"], function (query, dom) {
3     // retrieve an array of nodes with the ID "list"
4     var list = query("#list")[0];
5 })

 

类似于css的选择器,

查询总是返回一个数组

也可以通过类名来检索节点

1 // retrieve an array of nodes with the class name "odd"
2 var odds = query(".odd");

 

二、限制查询

1 // retrieve an array of nodes with the class name "odd"
2 // from the first list using a selector
3 var odds1 = query("#list .odd");

 

在所有的dom中限制结果

1 // retrieve an array of nodes with the class name "odd"
2 // from the first list using a DOM node
3 var odds2 = query(".odd", dom.byId("list"));

 

在指定的dom节点中限制范围

 

如果没有指定第二个参数,将会搜索整个DOM结构

对于大型DOM,最好使用第二个参数限制查询

三、更高级的选择

1 var oddA = query("a.odd");
2 
3 // Retrieve an array of any a element that has an
4 // li as its ancestor.
5 var allA = query("li a");
6 // Retrieve an array of any a element that has an
7 // li as its direct parent.
8 var someA = query("li > a");

 

四、NodeList

查询返回的数组实际是一个dojo/NodeList

考虑如下html:

1 <div id="list">
2     <div class="odd">One</div>
3     <div class="even">Two</div>
4     <div class="odd">Three</div>
5     <div class="even">Four</div>
6     <div class="odd">Five</div>
7     <div class="even">Six</div>
8 </div>

 

dojo代码如下:

 1 // Wait for the DOM to be ready before working with it
 2 require(["dojo/query", "dojo/dom-class", "dojo/domReady!"],
 3     function(query, domClass) {
 4 
 5         query(".odd").forEach(function(node, index, nodelist){
 6             // for each node in the array returned by query,
 7             // execute the following code
 8             domClass.add(node, "red");
 9         });
10 
11 });
12 
13 
14 require(["dojo/query", "dojo/NodeList-dom", "dojo/domReady!"], function(query) {
15     // Add "red" to the className of each node matching
16     // the selector ".odd"
17     query(".odd").addClass("red");
18     // Add "blue" to the className of each node matching
19     // the selector ".even"
20     query(".even").addClass("blue");
21 });
22 
23 // Remove "red" from and add "blue" to the className
24 // of each node matching the selector ".odd"
25 query(".odd").removeClass("red").addClass("blue");
26 
27 
28 // Change the font color to "white" and add "italic" to
29 // the className of each node matching the selector ".even"
30 query(".even").style("color", "white").addClass("italic");

 

五、Events

考虑如下html:

1 <button class="hookUp demoBtn">Click Me!</button>
2 <button class="hookUp demoBtn">Click Me!</button>
3 <button class="hookUp demoBtn">Click Me!</button>
4 <button class="hookUp demoBtn">Click Me!</button>

 

dojo代码如下:

1 <script>
2     // Wait for the DOM to be ready before working with it
3     require(["dojo/query", "dojo/domReady!"], function(query) {
4         query(".hookUp").on("click", function(){
5             alert("This button is hooked up!");
6         });
7     });
8 </script>

 

Dojo------DOM基础之Query

标签:

原文地址:http://www.cnblogs.com/becauseCode/p/5714812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!