Вы сравниваете jQuery after
с appendChild
, но они делают совершенно разные вещи. after
помещает элемент после эталонного элемента, appendChild
помещает его в его.
Вы, вероятно, хотите insertBefore
(с опорным узлом link
'* nextSibling
).
Итак:
var link = /* ... get the `a` element from somewhere ... */;
var new_node = document.createElement("div");
new_node.className="tooltip";
new_node.innerHTML = html;
link.parentNode.insertBefore(new_node, link.nextSibling);
Если link
- последнее, что есть у его родителя, это нормально; * * Будет тысяча двадцать-два быть * +1023 * и insertBefore
принимает null
в качестве опорного узла (это означает «включить в конце»).