0

私はこのdivを持っています:

<div id="test">
    {{? a && b || c < 0}}
        <div>Pece &alt; Love!</div>
    {{?}}
</div>

上記で報告されているように、そのコンテンツを取得する必要があります(中括弧の構文はテンプレートエンジン用です)。

残念ながら、.html() も .text() も機能しません。

// $('#test').text() 
{{? a && b || c < 0}}
    Pece &alt; Love!
{{?}}

.text() はタグを取り除きます

// $('#test').html()
{{? a &amp;&amp; b || c &lt; 0 }}
    <div>Pece &amp;alt; Love!</div>
{{?}}

.html() は、アンパサンド (および < >) をエンコードします。

何か助けはありますか?ありがとう

4

1 に答える 1

8

テンプレートを HTML として保存することはお勧めできません。<script>カスタム MIME タイプを使用してタグ内に保存します。

<script type="text/your-template" id="template">
    {{? a<b && b>c }}
        <div>Peace &amp; Love!</div>
    {{?}}
</script>

お気づきのように、HTML ではないテンプレートを HTML として保存すると、望ましくない結果が生じます。

  • 元のマークアップはなくなりました。プロパティを見ると.innerHTML、テンプレートが有効な HTML である場合にブラウザが解釈したものであり、変更することができます: http://jsfiddle.net/ZFd6a/3/
  • a<b && b>cac中央部分が要素として解釈されるため、に変わります。
  • 浮遊する小なりおよび大なり記号は、文字エンティティに変換されます。
  • HTML 文字エンティティを使用する必要があります。

あなたは完全にブラウザの HTML パーサーに翻弄されています。テンプレートを JavaScript 用に予約されていない MIME タイプのタグに移動する<script>と、テンプレートは文字列として扱われます。

于 2013-07-03T21:08:51.993 に答える