Dojo 1.6中与jQuery(html)等效的是什么?

4
在Dojo中,你可以使用dojo.toDom方法从原始HTML创建DOM节点。这在使用模板时特别有用。
请注意:我正在将一些东西从jQuery迁移到Dojo。原始HTML是从Underscore.js模板生成的,我想避免将它们丢弃。
更新:根据@esailija的评论,dojo.toDom确实相当于jQuery(html) - 不幸的是,它仅添加到Dojo 1.7中,而我只能使用Dojo 1.6。已更新问题以反映版本。
2个回答

6
我认为您可能需要结合dojo.placedojo._toDom(在>=1.7中没有下划线)来实现您的需求。 toDom函数将字符串转换为DOM元素或文档片段。
n = dojo._toDom("<li>foo</li>");             // n is a single DOM node
n = dojo._toDom("foo");                      // n is a DOM text node
n = dojo._toDom("<li>foo</li><li>bar</li>"); // n is a DOM document fragment
< p>“place”函数还接受一个字符串和一个目标参数。

dojo.place("<li>foo</li>", dojo.byId("baz")); // li element is added to 
                                              // element with id "baz"
dojo.place("<li>foo</li>", "baz");            // Same as above.
dojo.place("foo", "baz");                     // Note: Element with id "foo" 
                                              // is placed in element with
                                              // id "baz"
dojo.place(dojo._toDom("foo"), "baz");        // Text node "foo" is placed
                                              // in element with id "baz"

注意第三个示例:如果字符串不以<开头,则将其视为文档中其他位置的元素ID。顺便提一下,dojo.place函数还接受第三个参数,它可以是“first”、“last”、“replace”、“before”、“after”(可能还有其他一些)。请参考:http://dojotoolkit.org/reference-guide/dojo/place.html

谢谢!我不知道dojo._toDom() -- 我差点就要无端地抱怨Dojo缺少一个非常有用的功能了。 :p - Nikki Erwin Ramirez
1
@NikkiErwinRamirez 不用客气。实际上这是一个道场的“私有”(因此有前导下划线),但我认为他们意识到这是每个人直接使用的东西,所以在1.7中将其设置为“公共”。 - Frode

2

1
create函数中没有传递HTML,它看起来类似于jQuery("<elemname>", props)而不是jQuery(html),这两者是不同的重载。因此,toDom实际上等同于jQuery(html)create等同于jQuery("<elemname>", props ) - Esailija
dojo.toDom确实相当于jQuery(html)——不幸的是,它只被添加到Dojo 1.7中,而我卡在了Dojo 1.6上。 - Nikki Erwin Ramirez
1
在 Dojo 1.7 以下版本中,应该使用 dojo._toDom。您也可以查看 dojo.place(http://dojotoolkit.org/reference-guide/dojo/place.html)。 - Frode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接