1
有没有一种方法可以从Prototype中的HTML创建元素,这与jQuery的$('<div>Foo</div>')
类似?如何在Prototype中使用HTML创建元素?
基本上,我从Handlebars模板创建HTML块,并希望插入到DOM中,但不想将它包装在其他元素中。
有没有一种方法可以从Prototype中的HTML创建元素,这与jQuery的$('<div>Foo</div>')
类似?如何在Prototype中使用HTML创建元素?
基本上,我从Handlebars模板创建HTML块,并希望插入到DOM中,但不想将它包装在其他元素中。
我将这个函数作为'静态方法'添加到Mustache中以解决同一个问题。我不相信Prototype有任何内置解决方案。我用隐藏的textareas来保存我的模板代码,因此调用了$F()
。最后3行更具体到你的问题 - 创建一个新的div,插入你的应用模板HTML,然后返回第一个后裔(作为一个元素,在这一点上)。这假定你的模板只有一个根元素。
Mustache.createElementFromTemplateId = function(templateId, data) {
if (!this.cachedTemplates) this.cachedTemplates = {};
var templateStr = this.cachedTemplates[templateId];
if (!templateStr) {
templateStr = $F(templateId);
this.cachedTemplates[templateId] = templateStr;
}
var appliedTemplateStr = this.render(templateStr, data);
var div = new Element("div");
div.insert(appliedTemplateStr);
return div.firstDescendant();
};
谢谢。这个'firstDescendant()'是我一直在寻找的。老实说,受不了Prototype。使用jQuery几年,现在必须切换到我的工作原型,我没有得到这个库。就像它是由儿童写的一样。 – 2012-07-19 17:03:10
Whaaa ?!原型是炸弹!我觉得它使用起来非常直观和有趣。我觉得自己像jQuery一样n00b。我想这归结于你第一次接触到的框架。 – dontGoPlastic 2012-07-19 18:20:15
不确定。在jQuery中,您可以通过$('任何HTML代码')声明一个新元素。当您使用微模板并且不想将它们包裹到额外的元素中时特别有用。或者,所有类型的事件绑定(绑定,生活,委托,'点击'等)都非常有用,原型似乎只有'观察'。 – 2012-07-19 18:38:15