#javascript #jquery #html #dom
#javascript #jquery #HTML #dom
Вопрос:
В моем случае использования мне нужно динамически создать некоторый фрагмент HTML с помощью jquery.
Я начинаю с этой функции:
function createSection(divName) {
$("#" divName).append("<section id='team' class='pb-5'>
<div class='container'>");
}
Затем я продолжаю работу с этой функцией:
function createRow(divName) {
$("#" divName).append("<div class='row'>");
}
Затем я добавляю некоторые другие элементы, прежде чем захочу закрыть строку в разделе следующим образом:
function closeRow(divName) {
$("#" divName).append("</div>");
}
function closeSection(divName) {
$("#" divName).append("</div></section>");
}
Однако Jquery, похоже, сам добавляет закрывающие теги. Что портит мой код.
Я получаю этот html:
<section id="team" class="pb-5">
<div class="container">
</div> </section>
После выполнения моей первой функции createSection
.
Как я могу избежать этого?
Комментарии:
1. пожалуйста, поделитесь демонстрацией
2. он автоматически сгенерирует закрывающий тег, поэтому лучше создать HTML-строку (добавить) и вставить в конце.
3. Я знаю, что он автоматически генерирует закрывающий тег, но как этого избежать?
4. есть ли причина, по которой вы не можете объединить все это в одну функцию?
5. Возможно, поместите один полный «раздел» в html-шаблон и клонируйте его каждый раз, когда вы хотите добавить новый раздел.
Ответ №1:
У элементов нет тегов. Они сами по себе являются целыми объектами.
Теги используются для создания элементов в HTML.
jQuery позволяет использовать синтаксис HTML для создания элементов, но это всего лишь абстракция. jQuery не хранит строку HTML в памяти и не позволяет вам изменять ее. Он имеет дело с целыми элементами.
Если вы хотите работать со строкой HTML, то вам нужно иметь дело со строкой, а не с jQuery.
Однако лучше работать с элементами. Создайте div с помощью $()
и не append()
. Добавьте к нему дочерние элементы. Добавьте его к родительскому элементу.
function createRow(divName) {
var row = $("<div />");
row.addClass("row");
$("#" divName).append(div);
return row;
}
Комментарии:
1. Ах, я попробую это. Спасибо