0

コンテンツを正しくロードするダイアログボックスが機能しています。ダイアログには、ダイアログボックス内の.jqprintに対して実行される印刷ボタンもあります。DIVこれは最初は正常に印刷されますが、後続のすべての印刷コマンドは最初に印刷されたものをすべて印刷します。ダイアログには、正しい新しい情報が表示されます。ALERT古いコンテンツも表示するボタンを追加しました。

$("tr[id^=contract_]").css("cursor","hand").live("click",function(e) { 
    var sContract = $(this).attr("id").split("_")[1];
    $("<div id=\"printthis\" style=\"border:1px; #ffffff solid;\"></div>")
        .load("_contractdetails.aspx?contract=" + sContract + "")
        .dialog({
                autoOpen: true,
                title: "Contract Detail",
                draggable: true,
                modal: true,
                width:900,
                height:450,
                buttons: { "Close": function() { $(this).dialog("close");    },
                           "Print": function() { $("#printthis").jqprint(); },
                           "ALERT": function() { alert($("#printthis").html()); }
                         },
                resizable: true 
        });
});

#printthis毎回再作成されないのはなぜですか?どういうわけかのメモリコピーを破棄する必要があり#printthisますか?これはの制限.jqprintですか?

4

1 に答える 1

1

最初に古いdivを削除する必要があります。そうしないと、同じものidを2回使用するため、多くの奇妙な動作が発生する可能性があります。別の解決策は、必要な場合にのみdivを作成することです。

var div = $('#printthis');
if(!div.length) {
    div = $('<div id="printthis" style="border:1px; #ffffff solid;"></div>');
}

それに加えて、の成功コールバックからダイアログを開きたい場合があります。load()そうしないと、古いコンテンツでダイアログを開き、サーバーの応答が到着してしばらくしてから、新しいコンテンツでダイアログを更新します。

于 2011-05-27T06:19:10.190 に答える