我有一个正常加载内容的工作对话框。
该对话框还有一个打印按钮,对照对话框中的.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
的限制吗?
答案 0 :(得分:1)
您需要首先删除旧的div - 否则您使用相同的id
两次,这可能会导致许多奇怪的行为。另一种解决方案是仅在必要时创建div:
var div = $('#printthis');
if(!div.length) {
div = $('<div id="printthis" style="border:1px; #ffffff solid;"></div>');
}
除此之外,您可能希望从load()
的成功回调打开对话框,因为否则您打开包含旧内容的对话框,然后 - 稍后当服务器响应到达时 - 更新它新内容。