Mam tę sytuację, w której próbuję użyć tagu <template>
w moim źródła html:html szablon tag i jquery
<template id="some-id">
<div id="content-container">
<span>{{some_string}}</span>
<div>
</template>
ten kończy się umieszczając szablon w dokumencie, ale to nie jest uważane być w DOM. Oznacza to, że $ ("# content-container") nie znajduje się w przeglądarkach obsługujących tagi szablonów. Gdybym szukać:
$("#some-id")
dostanę to z powrotem:
<template id="some-id">
#document-fragment
<div id="content-container">
<span>{{some_string}}</span>
<div>
</template>
Nic z tego nie dziwi mnie. Muszę wiedzieć, jak to zrobić, aby sklonować zawartość fragmentu dokumentu i mieć nowy węzeł, który następnie będę mógł wkleić w DOM tam, gdzie chcę.
Znalazłem przykłady, jak to zrobić bez jQuery, ale znaczna część kodu wokół tego materiału już używa jQuery i muszę wiedzieć, jak użyć jQuery, aby to zrobić.
Moją pierwszą myślą było uzyskać html, a następnie użyć go do stworzenia nowego węzła:
stuff = $("#some-id").html()
new_node = $(stuff)
Wynika to z następujących błędów:
Error: Syntax error, unrecognized expression: <the html string>
nie wiem, czy błąd jest spowodowany składnią wąsów lub nie. Sądzę, że musi istnieć rozwiązanie jQuery do tego zachowania, ale kiedy szukam w Google, otrzymuję craploads trafień dla szablonów jQuery, które są różne.
Czy ktoś ma myśli, odpowiedzi lub wskazówki do stron/stron, które mi w tym pomogą? Staram się unikać robienia razem czegoś hackowskiego.
EDYCJA: Skończyło się na znalezieniu tego rozwiązania (nadal testuję to, aby upewnić się, że jest to rozwiązanie, ale wygląda obiecująco);
template = $("#some-id")
content = template.html()
new_div = $("<div></div>")
new_div.html(content)
Kończę z tym zawierającym div, którego tak naprawdę nie potrzebowałem wcześniej, ale mogę z tym żyć. Ale ten rodzaj czuje się kludgy. Czy ktoś ma lepsze podejście do tego? Plusem jest to, że nadal będzie działać w przeglądarkach, które jeszcze nie dostosowały zachowania znaczników szablonów.
dziękuję!
'$ ("# pewne-id") html' powinno być' $ ("# some-id"). html() ' – Nope
oops, tak, to literówka w moim pytaniu. Naprawię to. – jaydel
Spójrz na jquery .clone brzmi jak to ci pomoże ^^ http://api.jquery.com/clone/ – azzy81