jquery .dialog .jqprint重复以前的内容

时间:2011-05-27 06:14:27

标签: jquery dialog jqprint

我有一个正常加载内容的工作对话框。 该对话框还有一个打印按钮,对照对话框中的.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的限制吗?

1 个答案:

答案 0 :(得分:1)

您需要首先删除旧的div - 否则您使用相同的id两次,这可能会导致许多奇怪的行为。另一种解决方案是仅在必要时创建div:

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

除此之外,您可能希望从load()的成功回调打开对话框,因为否则您打开包含旧内容的对话框,然后 - 稍后当服务器响应到达时 - 更新它新内容。