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'snextSiblingです)。

それで:

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ます(「最後に挿入」を意味します)。nullinsertBeforenull

于 2011-03-14T11:51:26.350 に答える
0

としてインスタンス化されたノードがすでにあると仮定するとlink、プレーンなJavascriptでこの方法でやりたいことができます。

link.parentNode.appendChild(new_node);

linkノードは、そのコンテナの最後のノードである必要があります。それ以外の場合は、linkのnextSiblingを見つけて、適切な場所insertBeforeに配置するために使用する必要がありnew_nodeます。

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