我正在尝试将我的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
函数,但它会产生一些奇怪的结果。
请帮我解决这个问题。
答案 0 :(得分:10)
您正在将jQuery的after
与appendChild
进行比较,但它们的确做了很多不同的事情。 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);
是其父母的最后一件事,那很好; link
将link.nextSibling
null
接受insertBefore
作为参考节点(表示“在末尾插入”)。
答案 1 :(得分:0)
jQuery(link).append(new_node);
答案 2 :(得分:0)
假设您已经将节点实例化为link
,您可以在普通Javascript中以这种方式执行您想要的操作:
link.parentNode.appendChild(new_node);
link
节点必须是其容器中的最后一个节点。否则,您必须找到link
的nextSibling并使用insertBefore
将new_node
放在适当的位置。