jQuery .after() 函数有什么替代方法吗

发布于 2024-10-21 17:19:40 字数 404 浏览 3 评论 0原文

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

请帮我解决这个问题。

I am trying to convert my jQuery script into javascript. I have a problem there..

I have a script that creates a node

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

When i do this

jQuery(link).after(new_node);

It works fine. But I want to do it javascript way. I have tried using appendChild function but it gives some strange results.

Please help me out with this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

山色无中 2024-10-28 17:19:40

您正在将 jQuery 的 afterappendChild 进行比较,但它们做的事情非常不同。 after 将元素放置在引用元素之后appendChild 将其放置在其内部

您可能想要 insertBefore(参考节点是linknextSibling)。

所以:

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 将为 null 并且 insertBefore 接受 null 作为引用节点(这意味着“在末尾插入”)。

You're comparing jQuery's after with appendChild, but they do very different things. after puts the element after the reference element, appendChild puts it inside it.

You probably want insertBefore (with the reference node being link's nextSibling).

So:

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);

If link is the last thing in its parent, that's fine; link.nextSibling will be null and insertBefore accepts null as the reference node (it means "insert at the end").

淡写薰衣草的香 2024-10-28 17:19:40

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

link.parentNode.appendChild(new_node);

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

Assuming you already have a node instantiated as link, you could do what you want this way in plain Javascript:

link.parentNode.appendChild(new_node);

The link node would have to be the last node in its container. Otherwise you would have to find link's nextSibling and use insertBefore to put new_node in its proper place.

金橙橙 2024-10-28 17:19:40
jQuery(link).append(new_node);
jQuery(link).append(new_node);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文