3

我正在尝试将我的 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函数,但它给出了一些奇怪的结果。

这个你能帮我吗。

4

3 回答 3

11

您将 jQueryafter与进行比较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);

如果link是其父级中的最后一件事,那很好;link.nextSibling将是nullinsertBefore接受null作为参考节点(这意味着“插入末尾”)。

于 2011-03-14T11:51:26.350 回答
0

假设您已经有一个实例化为 的节点link,您可以使用纯 Javascript 以这种方式执行您想要的操作:

link.parentNode.appendChild(new_node);

link节点必须是其容器中的最后一个节点。否则你将不得不找到link's nextSibling 并使用它insertBefore来放置new_node它的正确位置。

于 2011-03-14T11:51:09.187 回答
-1
jQuery(link).append(new_node);
于 2011-03-14T11:49:56.597 回答