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

Создание пустого элемента с тегом start tag и self clos tag

В jQuery есть ли разница между этим:

$('<div>').appendTo('body');

И это:

$('<div />').appendTo('body');

Я всегда видел это как "закрытие", но я столкнулся с первым способом, используемым в некотором производственном коде без ошибок. Любая вероятность того, что это вызовет проблемы на линии, или это приемлемая практика?

4b9b3361

Ответ 1

В документации говорится:

Когда параметр имеет один тег, такой как $('< img/ > ') или $('<a> </a> '), jQuery создает элемент с использованием встроенного JavaScript createElement().

В нем также говорится:

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

Таким образом, форма $('<div>') также работает, но она не документирована. Из документации ясно, что намерение состоит в том, что тег, который требует закрывающий тег, должен либо иметь этот закрывающий тег, либо быть самозакрытым.

Я бы придерживался документированной версии, так как это вряд ли станет жертвой взломанного изменения в будущей версии.

< напыщенная >
В библиотеке jQuery есть привычка вкладывать как можно больше в один вызов функции (см. Недавнее добавление on для примера), поэтому он пока не придумал, что они придумают что-то новое, когда вы используете не- самозакрывающийся тег...
& Л; /& напыщенная GT;

Ответ 2

Нет. Ни этот $("<div>"), ни этот $("<div />") не вызовет проблем.

Доказательство состоит в том, что если мы перейдем к источникам jQuery, мы увидим, что в случае селектора с синтаксисом с одним тегом <...> он анализирует селектор с этим регулярным выражением:

rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/

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

Ответ 3

Этот синтаксис не вызовет проблем, пока ничего не произойдет после него.

$("<div>") // Ok!
$("<div>foobar") // Not Ok!
$("<div><p>") // Not Ok!

Для справки см. http://api.jquery.com/jQuery/#jQuery2