0

こんにちは、次のようにして JQuery オブジェクトを別のオブジェクトに挿入しようとしています。

var htmlCode = $("<div id='"+data.layoutDescriptions[i].id+"'></div");          
if(data.contentRef == "RecursiveContactSubForm"){
        if(htmlArray[2]){
            alert("in here");
        htmlCode.append(htmlArray[2]);
        }
        else{
            alert("in here2");
            var tmp = htmlCode;
            htmlCode.append(tmp);
        }
    }

これが機能しない理由がわかりません。

何か案は?

ありがとう。

4

3 に答える 3

2

私はあなたのエラーがここにあると仮定しています:

var tmp = htmlCode;
htmlCode.append(tmp); 

この割り当ては のコピーを作成するのではなくhtmlCode、それへの新しい参照を作成します。tmphtmlCode同じオブジェクトを表すため、オブジェクトをそれ自体に追加しようとすると失敗します。

clone次の関数を使用できます。

var tmp = htmlCode.clone(true);
htmlCode.append(tmp);

に渡すtrueclone、オブジェクトに添付されたイベントとデータも新しいオブジェクトにコピーされます。

于 2012-08-13T15:25:58.553 に答える
1

試す :

var tmp = htmlCode[0].outerHTML;
htmlCode.append(tmp);

これは(私は願っていますが)あなたの質問に答えますが、いくつかの問題に対処していません。特に、コンテナと同じIDを持つ要素をプッシュしているため、実際には避ける必要があります。

于 2012-08-13T15:19:42.710 に答える
1

さて、できることは次のとおりです(コードロジックが適切に見えるため):

(1)戻り値をチェックして、これが期待どおりかどうかを確認します。

console.log(htmlCode);
console.log(data.contentRef);
console.log(htmlArray[2]);
console.log(tmp);

(2)ブラウザのコンソールをチェックして、別の種類のエラーを探します (他の JavaScript コードに構文エラーがある可能性があります)。

(3)変数部分の割り当てでエラーが発生する可能性がありtmpます。正しい方法は次を使用することclone()です:

var tmp = htmlCode.clone(true);

知っておいていただきたいのは、あなたのコードのアイデアがうまく機能していることです。

例えば:

ライブデモ: http://jsfiddle.net/FYC7L/

var htmlArray = new Array("<div id='newElement_1'>Element 1</div>", "<div id='newElement_2'>Element 2</div>", "<div id='newElement_3'>Element 3</div>");

var htmlCode = $("<div id='test'>Test</div>");          

if(htmlArray[2]){
    htmlCode.append(htmlArray[2]);
}

console.log(htmlCode);

ご覧のとおり、これは機能しているため、投稿の最初の部分で書いたように、戻り値に何か (おそらく間違っている) があるか、tmp変数に問題がある可能性があります。

上記の例では、次のように出力されます。

ここに画像の説明を入力

お役に立てれば :-)

于 2012-08-13T15:27:36.253 に答える