2

这是设置,我有一个小胡子模板存储为字符串,就像这样

<div id="one">
    <span>
        <img src="{{foo}}" />
    </span>
</div>
<div id="two">
    <span>
        <img src="{{bar}}" />
    </span>
</div>

我已经将它插入页面,一切都很好

但是现在我需要获取该模板的一部分并将其重新插入页面,问题是 jQuery 不断记录 404 错误,因为它出于某种原因试图下载图像。(这里没有图像预加载器或插件)

var newTemplate = $(Template).find('#two').html();

我认为这只会对字符串进行操作,但它似乎将其解析为实际的 DOM 元素并尝试下载图像......这是来自 Chrome 的错误

GET http://localhost/src/%7B%7Bphoto%7D%7D 404 (Not Found) /src/js/libs/jquery.js:5952
   jQuery.fn.extend.html /src/js/libs/jquery.js:5952
   jQuery.extend.access /src/js/libs/jquery.js:855
   jQuery.fn.extend.html /src/js/libs/jquery.js:5928
   Backbone.View.extend.search /src/js/views/vote.js:39
   jQuery.event.dispatch /src/js/libs/jquery.js:3332
   jQuery.event.add.elemData.handle.eventHandle

我也尝试了一些变化,比如

var foo = $('<div />').html(Template).find('#isotope').html();

var foo = $('<div />').detach().html(Template).find('#isotope').html();

真正让我烦恼的是,如果我将我想要的 html 写为纯字符串,这可以正常工作,但这违背了重点

4

2 回答 2

0

您应该为您的模板使用单独的字符串。一旦你将字符串传递给 jQuery $(),它们就会变成 DOM 元素。

于 2012-04-19T09:40:26.810 回答
0
var data = {foo:'/images/foo.jpg',bar:'/images/bar.jpg'};
var html = $.mustache(Template,data);
var two = html.find('#two');

请阅读http://zudolab.net/blog/?p=221(日语)

于 2012-04-19T09:43:34.893 回答