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

时间:2011-03-14 11:46:23

标签: javascript jquery html jquery-after

我正在尝试将我的jQuery脚本转换为javascript。我有一个问题..

我有一个创建节点的脚本

var new_node = document.createElement("div");
      new_node.className="tooltip";
      new_node.innerHTML = html;
      alert(new_node.className);

当我这样做时

jQuery(link).after(new_node);

工作正常。但我想以javascript方式做到这一点。我尝试过使用appendChild函数,但它会产生一些奇怪的结果。

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:10)

您正在将jQuery的afterappendChild进行比较,但它们的确做了很多不同的事情。 after元素放在引用元素后面,appendChild放在中。

您可能需要insertBefore(参考节点为link的{​​{1}})。

所以:

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); 是其父母的最后一件事,那很好; linklink.nextSibling null接受insertBefore作为参考节点(表示“在末尾插入”)。

答案 1 :(得分:0)

jQuery(link).append(new_node);

答案 2 :(得分:0)

假设您已经将节点实例化为link,您可以在普通Javascript中以这种方式执行您想要的操作:

link.parentNode.appendChild(new_node);

link节点必须是其容器中的最后一个节点。否则,您必须找到link的nextSibling并使用insertBeforenew_node放在适当的位置。