2012-02-09 3 views
5

Есть ли способ сохранить фрагмент HTML в переменной, используя Javascript или jQuery, как это? (Очевидно, это нерабочим пример)Как сохранить фрагмент HTML и вставить его позже в документ?

var mysnippet = << EOF 
<div class="myclass"> 
    <div class="anotherclass"> 
    Some dummy text 
    </div> 
</div> 
EOF 

А затем вставьте его в документ с помощью JQuery:

mysnippet.append($('#someelement')); 

EDIT:

Пожалуйста, прочитайте это, прежде чем ответить на комментируя: У меня есть необработанный HTML-фрагмент внутри моего JS-файла, и мне нужно сохранить его в переменной Javascript, используя что-то вроде th при строительстве EOF. Мне нужно избегать помещать его между кавычками.

Если это невозможно, используя Javascript и/или jQuery, тогда вопрос не имеет решения.

+2

$ (mysnippet) .append (#someelement) – ZiTAL

+0

Поскольку никакой разумный редактор файлов или linter не будет правильно отображать ваш js-файл, я уверен, что это ** всегда лучше **, чтобы поместить HTML в отдельный файл .html, а затем прочитать его с помощью '$ .get (" mysnippet.html ")'. Тогда у вас есть возможность редактировать DOM нового объекта перед добавлением Кроме того, HTML и JS можно легко нарисовать, а также отделять данные от кода, что всегда хорошо для будущей проверки. –

ответ

1

Вы можете использовать шаблоны JavaScript как ejs, haml-coffee ...

+0

Я отмечаю ваш ответ как действительный, как кажется b единственный способ сделать то, что мне нужно. Например, используя erb (язык шаблонов Rails), я могу отобразить внешний код фрагмента кода HTML и избежать его с помощью помощника Rails, поэтому я могу, наконец, сохранить его в переменной, чтобы добавить его в документ. –

4

Просто получите код HTML div, который вы хотите, по var content = $('#somediv').html();, а затем добавьте его в какой-нибудь div позже! $('#otherdiv').append(content);

$().html(); поставляет содержание HTML этого div. документация: http://api.jquery.com/html/

$().append(<content>); добавляет контент в специальный div. documentatoin: http://api.jquery.com/append/

+0

Код HTML, который я хочу добавить, должен быть в том формате, который я записал в мой вопрос. Он еще не существует в документе. –

+0

в порядке, просто просто используйте метод .append() –

0

Да. Fiddle example

JavaScript

var html = '<b>Bold</b>' 
$('.anotherclass').append(html); 

HTML

<div class="myclass"> 
    <div class="anotherclass"> 
    Some dummy text 
    </div> 
</div> 
1

Вы могли бы написать:

var mysnippet = "<div class='myclass'>"+ 
    "<div class='anotherclass'>"+ 
    "Some dummy text"+ 
    "</div>"+ 
"</div>"; 

, а затем вставить использует append функцию (которая принимает фрагмент кода в качестве аргумента).

0

К сожалению, ничего подобного << EOF не имеется. Вот одно из решений:

$el = $('<div />') 
    .addClass('myClass') 
    .append(
    $('<div />') 
     .addClass('anotherclass') 
     .text('Foo Bar') 
); 
0

Думая о том же вопросе Я нашел это обсуждение. Я имею в виду, чтобы поместить скрытый textarea, содержащий html, а затем извлечь html оттуда.

Таким образом, не будет конфликтов с удвоенными идентификаторами DOM, так как содержимое textarea не отображается как html.

0

Для тех, кто пришел через это, как я ... Вы можете использовать новый <template> тег в HTML5. Он по-прежнему не хранит HTML в JavaScript, к сожалению :(

+0

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template – Sean

Смежные вопросы