dojo.query、JSON树(结构)、dojo读取json(转)
发布时间:2020-12-16 21:41:16 所属栏目:百科 来源:网络整理
导读:老外这么说: dojo.query() is the swiss army knife of DOM node manipulation in Dojo. Much like Prototype’s “$$” (bling-bling) function or JQuery’s “$” function,dojo.query provides robust,high-performance CSS-based node selector support
老外这么说:
dojo.query() is the swiss army knife of DOM node manipulation in Dojo. Much like Prototype’s “$$” (bling-bling) function or JQuery’s “$” function,dojo.query provides robust,high-performance CSS-based node selector support with the option of scoping searches to a particular sub-tree of a document 简单点说,就是dojo.query()是可以按样式、标签名、字符等等,来查询文档中的某个元素。 关键是怎么使用,国外的网上说的很清楚,其实你要是能耐住性子把DOJO BOOK里面的都认认真真看一边,就不用看我下面写的这点东西。 我也是惊叹dojo.query 中文资料的匮乏,才把自己看的英文资料和自己的实践做个小结,利人利己。 这个是老外的例子: Example 1 search the entire document for elements with the class “foo”: dojo.query(".foo"); these elements will match: Example 2 search the entire document for elements with the classes “foo” and “bar”: dojo.query(".foo.bar"); these elements will match: while these will not: Example 3 find “ elements which are descendants of paragraphs and which have a “highlighted” class: dojo.query("p span.highlighted"); the innermost span in this fragment matches: ... ... Example 4 set an “odd” class on all odd table rows inside of the table #tabular_data ,using the > (direct child) selector to avoid affecting any nested tables: dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd"); Example 5 remove all elements with the class “error” from the document and store them in a list: var errors = dojo.query(".error").orphan(); Example 6 add an onclick handler to every submit button in the document which causes the form to be sent via Ajax instead: dojo.query("input[type='submit']").onclick(function(e){ dojo.stopEvent(e); // prevent sending the form var btn = e.target; dojo.xhrPost({ form: btn.form, load: function(data){ // replace the form with the response var div = dojo.doc.createElement("div"); dojo.place(div,btn.form,"after"); div.innerHTML = data; dojo.style(btn.form,"display","none"); } }); }); 上面这些例子主要是为了大家能了解query,怎么用! 下面是我自己的例子: 结合JSON查询。 这个是个JSON集合,比较好的用法是你把这个代码放在一个filename.json的文件里。 我放在D:WK50tems114test.json
对于这个JSON的结构有几句话: JSON的结构,就是 键:值 identifier中文意思:标识符;identifier: 'name' 的意思就是指定后面items里面的name键为标识符。老外说标识符就是唯一识别元组,不会重复的那个东西。 label 中文意思:标签;我的理解就是一个说明吧,这个就好像是你有名字,又有身份证编号一样。这个label就是你的名字,那个identifier就是你的身份证编号。 items 中文意思:元素集合 ,就表示是一个数组,jsonAarry 上面说这些,是为了说明下面这个: 如果你要获取一个元素的label 需要用store.getLabel(item) 这下问题来了: store是什么?item是什么?先解释一下store就是数据源,dojo里面有个方法可以把json读取后存储为一个数据源,这里的item和上面说的items是有关系的,item就是items中的元素,具体的要看下面的代码。这个也是老外的例子,指不过我略微修改和加了点注释。如果要运行改代码,有个必要条件就是你在引入dojo.js的时候,djConfig里面的isDebug: true 我是jsp的页面,里面引用如下:
这个例子看似复杂,明白了每句话的意思之后,才觉得,真是简单啊!
运行结果:
最后一点说明:json文件中: children:[{_reference:'Egypt'},{_reference:'Sudan'}] 中_reference,这个东西找了很多地方,就只在DOJO的例子看见过,没在其他地方见过,在这里就是说,引用了name:'Egypt'元素。尚不清楚是不是标准JSON里面的结构,或者就是dojo自己定义的结构,清楚的人劳烦解释一下。
转载自:http://www.cnblogs.com/mylem/archive/2009/11/15/1603251.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |