Насколько я могу судить, следующий код должен работать, создавая элемент <div>
, а затем создавая элемент <p>
; выражение должно приводить к созданию объекта jQuery с двумя элементами:
$("<div>first element content</div>").after("<p>second element content</p>");
Однако, я получаю совсем другое. Документация (см. заголовок "Вставка отключенных узлов DOM" ) сообщает мне, что приведенный выше код должен приводить к созданию объекта jQuery, захватывая как фрагменты HTML, так и строя два элемента DOM. Но, что я получил, в нескольких разных версиях jQuery, все выше 1.4, является объектом jQuery только с 1 node. Тем не менее, следующий код работает просто отлично, возвращая (я считаю,) правильный объект jQuery, два элемента внутри:
$("<div></div>").after("<p>second element content</p>");
И этот пример также работает:
$("<div></div>").after("<p>second element content</p>").after("<p>third element content</p>");
Кажется, что метод .after()
работает отлично, если созданный первый DOM node пуст, но не тогда, когда он отсутствует (независимо от содержимого последующих узлов DOM, присоединенных к нему).
Мне что-то не хватает о внутренних функциях jQuery, причудливых проблемах DOM и/или особенностях JavaScript, или это просто ошибка jQuery, которая сохранялась с версии 1.4 на 1.7?
(Вот скудный JSFiddle, демонстрирующий проблему довольно ясно.)