При просмотре кода jQuery требуется другой путь к коду, если то, что вы передаете в функцию jQuery, представляет собой простой тег типа "<span>"
в сравнении с тем, что вы передаете. Когда это простой тег, jQuery вызывает createElement() on it, pretty much like your workaround code
. Когда это не простой тег, jQuery вызывает createDocumentFragment()
, а затем выбирает намного более сложный путь, включающий временный div, установку HTML в innerHTML и т. Д. *
Если вы делаете свой HTML простым тегом, а затем добавляете атрибут id к объекту после его создания, он должен следовать по пути кода createElement.
Чтобы обойти это, измените это:
new_object.wrapper = '<span id="adfasdfasdfwersadfas3rs">';
к этому:
new_object.wrapper = '<span id="adfasdfasdfwersadfas3rs"></span>';
Из этой документации jQuery :
Для обеспечения кросс-платформенной совместимости фрагмент должен быть
хорошо сформирован. Теги, которые могут содержать другие элементы, должны быть в паре
с закрывающим тегом.
Ваш HTML не был связан с закрывающим тегом.