<template>
HTMLソースでタグを使用しようとしているこの状況があります:
<template id="some-id">
<div id="content-container">
<span>{{some_string}}</span>
<div>
</template>
これにより、最終的にテンプレートがドキュメントに配置されますが、DOM にあるとは見なされません。これは、テンプレート タグをサポートするブラウザーで $("#content-container") が見つからないことを意味します。私が検索した場合:
$("#some-id")
私はこれを取り戻します:
<template id="some-id">
#document-fragment
<div id="content-container">
<span>{{some_string}}</span>
<div>
</template>
これのどれも私を驚かせません。方法を知る必要があるのは、ドキュメント フラグメントのコンテンツを複製し、必要な場所で DOM に貼り付けることができる新しいノードを作成することです。
jQueryを使わずにこれを行う方法の例を見つけましたが、このようなコードの多くはすでにjQueryを使用しており、jQueryを使用してこれを行う方法を知る必要があります.
私が最初に考えたのは、html を取得し、それを使用して新しいノードを作成することでした。
stuff = $("#some-id").html()
new_node = $(stuff)
これにより、次のエラーが発生します。
Error: Syntax error, unrecognized expression: <the html string>
エラーが口ひげの構文によるものかどうかはわかりません。この動作のどこかにjQueryソリューションが必要だと思いますが、Googleで検索すると、jQueryテンプレートのヒットが大量に表示されますが、これは異なります。
これを解決するのに役立つサイト/ページへの考え、回答、またはポインタを持っている人はいますか? 私はハック的なものを一緒にまとめるのを避けようとしています。
編集:私はこの解決策を見つけました(解決策であることを確認するためにまだテストしていますが、有望に見えます);
template = $("#some-id")
content = template.html()
new_div = $("<div></div>")
new_div.html(content)
以前は本当に必要ではなかった div を含むことになりますが、それを受け入れることができます。でも、こういうのはダサく感じる。誰もこれに対するより良いアプローチを持っていますか? 利点は、テンプレート タグの動作をまだ完全に適応させていないブラウザーでも機能することです。
ありがとう!