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 に答える