3

ここではjQuery ajaxを使用しています:

$.ajax({
    type: "GET",
    url: URL,
    data: { Mode: "POB1"},
    success: function (data) {
        var Html = $.trim($(data).find("#divpob").html());
        if (Html) {
            $(Html).find(".lblpob").text("UserName" + Username);
            $(".DivRprt").html(Html);
        }
    }
});

ここでの値はlblpob変化しませんでしたが、.clone()このように使用すると

if (Html) {
    var Html2 = $(Html).clone(true);
    $(Html2).find(".lblpob").text("UserName" + Username);
    Html = Html2;
    $(".DivRprt").html(Html);
}

lblpob変わります。

ここでどのような違い.clone()が生じていますか?

4

3 に答える 3

1

2番目のケースでは、jQueryの結果を変数に保存しています。

var Html2 = $(Html).clone(true);

.clone()jQueryコレクションを変数に保存したり呼び出したりせずに変更を加えると.appendTo()、それらの変更が失われるため、それがなくても機能します。

改善

DOM->HTMLシリアル化の後にHTML->DOMを実行する代わりに、次のようにすることで、1つの手順をスキップして、変数を保持する必要をなくすことができます。

$(data).find("#divpob")
    .find(".lblpob")
        .text("UserName" + Username) // modify
        .end()
    .appendTo('.DivRpt'); // append to container
于 2013-02-13T03:38:49.680 に答える