Вопрос по jquery – Создание пустого элемента с начальным тегом и самозакрывающимся тегом

13

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

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

И это:

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

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

Ваш Ответ

3   ответа
6

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

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

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

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

4

если после него ничего не происходит.

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

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

Хороший ответ, но после просмотра документации я решил, что, несмотря на то, что она работает, это, вероятно, все еще не лучшая практика. Luke The Obscure
12

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

When the parameter has a single tag, such as $('<img />') or $('<a></a>'), jQuery creates the element using the native JavaScript createElement() function.

Это также говорит:

Tags that cannot contain elements may be quick-closed or not

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

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

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

Похожие вопросы