是否有jQuery .after()函数的替代方法

usm*_*ali 3 html javascript jquery jquery-after

我试图将我的jQuery脚本转换为javascript.我有问题..

我有一个创建节点的脚本

var new_node = document.createElement("div");
      new_node.className="tooltip";
      new_node.innerHTML = html;
      alert(new_node.className);
Run Code Online (Sandbox Code Playgroud)

当我这样做

jQuery(link).after(new_node);
Run Code Online (Sandbox Code Playgroud)

它工作正常.但我想以javascript方式做到这一点.我试过使用appendChild函数,但它给出了一些奇怪的结果.

这个你能帮我吗.

T.J*_*der 10

你比较jQuery的after使用appendChild,但他们做的非常不同的事情.after放元件的参考元件,appendChild所说它.

你可能想要insertBefore(参考节点是link's 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);
Run Code Online (Sandbox Code Playgroud)

如果link是其父母的最后一件事,那很好; link.nextSibling将是nullinsertBefore接受null作为参考节点(它意味着"在末尾插入").