Я обнаружил крайние случаи в IE, где мой код был волшебным образом исправлен с использованием $("<div></div>")
вместо $("<div>")
. Я всегда делаю это из паранойи.
Я уверен, что в какой-то момент в документации jQuery было сказано, что вы должны закрыть все свои теги. Это больше не относится к 1.6, но если вы используете 1.3.2 или 1.4.2, вы можете закрыть их, чтобы быть в безопасности.
Хотя, если вы посмотрите на исходный код, я бы соблазнился, что для простых тегов это совершенно безопасно. Будьте осторожны, что для сложных тегов или тегов с атрибутами источник использует .innerHTML
, поэтому я настоятельно рекомендую передавать правильно закрытые теги.
Источник
var rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
...
// If a single string is passed in and it's a single tag
// just do a createElement and skip the rest
ret = rsingleTag.exec(selector);
if (ret) {
if (jQuery.isPlainObject(context)) {
selector = [document.createElement(ret[1])];
jQuery.fn.attr.call(selector, context, true);
} else {
selector = [doc.createElement(ret[1])];
}
} else {
ret = jQuery.buildFragment([match[1]], [doc]);
selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
}
В этом случае с $("<div>")
вы обнаружите, что ret[1]
является "div", поэтому он вызывает document.createElement("div")
.