考虑这个样例:动态创建一个页面的时候,用new listtem()生成多个listitem, 且每一个listitem中都生成一个按钮button。
假设想要给每一个按钮都绑定一个click事件,用dojo.query来获取这些button是比較方便的。
这样做的时候我遇到一个问题, 在create这些button的循环语句中我给每一个button 定义了id = "somebtn" 。
然后试图用var btnlist = dojo.query("#somebtn") 得到一个包括页面中全部button的数组。
遗憾的是,query 语句并没能获取到全部button, 它仅仅获取到1个button对象, 从 console.log(btnlist.length) 语句的输入结果是1能够推断。
又一次查看http://dojotoolkit.org/reference-guide/1.9/dojo/query.html documentation 中的说明,发现文中用的样例基本都是query(".someClass"),仅仅用了class, 并没实用id。
于是回顾起曾经看过的关于class与id的差别提到过id是唯一标识,也就意味着页面中的id仅仅能代表唯一一个元素, 那么就能够想得通为什么query(id)仅仅能获取到1个元素。
给button加入了class属性后, 再用query("class")就能够获取到全部button对象了。
遇到问题的时候,先通过调试大致推断问题出在哪里,确认问题后再查文档,对症下药。 这是今天的小结。