jQuery 字符串解析日志 a 404

jQuery string parsing logs a 404

本文关键字:日志 字符串 jQuery      更新时间:2023-09-26

这是设置,我有一个小胡子模板存储为字符串,如下所示

<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 编写为纯字符串,这工作正常,但这违背了重点

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

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(日语)