Подтвердить что ты не робот

JQuery: При создании нового элемента мне нужен конечный тег?

var $div = $('<div class="error">').appendTo($('#header'));

При создании новых элементов и их добавлении в DOM вам нужен конечный тег? Почему или почему нет? Мне нужен только конечный тег, если я помещаю контент в тег, который я создаю? так:

var $div = $('<div class="error"> Error-Homie! </div>').appendTo($('#header'));

или я могу создать элемент с содержимым в нем, но оставить конец тега? Хорошо? Плохо?

var $div = $('<div class="error">').appendTo($('#header'));
4b9b3361

Ответ 1

Хотя это может сработать, если вы не используете закрывающий тег (или, по крайней мере, самостоятельно закрываете тег), вы должны добавить закрывающий тег (self- close) (как уже упоминалось, для межплатформенной совместимости):

Чтобы обеспечить кросс-платформенную совместимость, фрагмент должен быть хорошо сформирован. Теги, которые могут содержать другие элементы, должны быть сопряжены с закрывающим тегом:

$('<a href="http://jquery.com"></a>');

В качестве альтернативы, jQuery позволяет синтаксис XML-подобных тегов (с пробелом или без него перед косой чертой):

$('<a/>');

Теги, которые не могут содержать элементы, могут быть быстро закрыты или нет:

$('<img />');
$('<input>');

Вот как jQuery создает элементы:

Если HTML более сложный, чем один тег без атрибутов, как и в приведенном выше примере, фактическое создание элементов обрабатывается механизмом браузера innerHTML. В большинстве случаев jQuery создает новый элемент и устанавливает свойство innerHTML элемента в фрагмент HTML, который был передан. Когда параметр имеет один тег, например $('<img />') или $('<a></a>'), jQuery создает элемент используя встроенную функцию JavaScript createElement().


Btw. вы также можете передать данные в качестве второго параметра:

$('<div />', {'class': 'error', text: 'Error-Homie!'})

Ответ 2

вам нужен конечный тег: http://api.jquery.com/appendTo/ например

$('<p>Test</p>').appendTo('.inner');

он также должен быть

.appendTo('#header');

а не

.appendTo($('#header'));

Ответ 3

вы, вероятно, можете сделать это, как это

$('<div/>',{class:'error'}).html('Error-Homie!').appendTo($('#header'));

Ответ 4

Вам всегда нужен конечный тег, чтобы иметь правильный html.

Но это факт, что большинство браузеров допускают такие ошибки. Нет никаких оснований быть ленивым, однако, вы не должны полагаться на толерантность браузеров к работе вашего кода. Этот допуск позволяет отображать сайты с несколькими ошибками, а не предостерегать сознательно неправильный код.