7

を使用して既存の要素に HTML スニペットを動的に追加しようとしています.append

どういうわけか、スクリプトによって作成された HTML 文字列が要素に追加されません。

スニペットが追加された時点では、追加された要素は DOM にフックされていません。

これらはすべて JavaScript 関数にカプセル化されています。コードは次のとおりです。

append_content = function() {
    var elem = $('<li><div>some text</div></li>');
    var somecontent = get_content();  // returns a string: '<div>xx</div>'
    elem.append('<div>bleh1</div>');
    elem.append(somecontent);
    elem.append('<div>bleh2</div>');
    console.log(elem);
    return elem;
}

ログには、次のようなすべての項目が正しく含まれています。

<li>
    <div>some text</div>
    <div>bleh1</div>
    <div>xx</div>
    <div>bleh2</div>
</li>

しかし、後で elem を DOM にフックすると、関数呼び出しの内容が失われます。つまり、計算されたソースには表示されません (FireBug でも Chrome 開発ツールでも)。

次のようになります。

<li>
    <div>some text</div>
    <div>bleh1</div>
    <div>bleh2</div>
</li>

ここでスコープの問題などがあるとほぼ確信していますが、わかりません。コンソールにエラー メッセージはありません。何かアドバイス?

アップデート

確かに、これは自作の問題でした。ここに投稿する例のコードを書き留めてみると、上記の関数呼び出しなしで同様の関数を呼び出していることに気付きました-愚かな私。すべてのコメントとヘルプに感謝します。

4

1 に答える 1

2

私には正しいように見えます - get_content() メソッドの出力をチェックして、実際に有効な html が返されていることを確認します。コンソールと同様に alert("somecontent") を使用して確認してください - console.log は firebug の XML の最初の行のみを書き出します - クロムについてはわかりません...

于 2012-05-01T10:17:26.853 に答える