0

我有一个可以正确加载内容的工作对话框。该对话框还有一个打印按钮,该按钮.jqprintDIV对话框中执行。这第一次打印得很好,但是每个后续的打印命令都会打印首先打印的内容。对话框显示正确的信息。我添加了一个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两次可能会导致很多奇怪的行为。另一种解决方案是仅在必要时创建 div:

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

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

于 2011-05-27T06:19:10.190 回答