我有一個div,我想寫入一個彈出窗口(打印)。如何修改jQuery html()方法的返回值?
我使用jQuery的HTML抓住div的我想在頁面上的內容()函數,就像這樣:
function printOptions() {
var printwindow = window.open('', 'Report', 'height=600,width=600');
printwindow.document.write('<html><head><title>Report</title>');
printwindow.document.write('</head><body>');
printwindow.document.write($('#ReportHeader').html());
printwindow.document.write($('#ReportData').html());
printwindow.document.write('</body></html>');
printwindow.document.close();
printwindow.print();
return true;
}
不過,在我document.write()的該#ReportHeader的內容, #ReportData div,我想稍微改變它們。
具體而言,我想用包含該文本框值的簡單跨度替換所有文本框。
喜歡的東西:
$("input[type=text]").each(function() {
$(this).replaceWith("<span>" + $(this).val() + "</span>");
});
我如何能做到這一點,以不改變我現有的網頁這些div的只是內容?我只想修改我將要寫入打印窗口的內容。我不認爲我可以選擇html()返回的內容,因爲它只是返回一個字符串。
我不希望修改正在啓動彈出窗口的原始頁面。只是我要寫入彈出窗口的內容。
有關我如何做到這一點的任何想法?
+1 - 這是比我的回答更明確的語義。 – 2010-08-18 20:59:47
我閱讀了關於end()的文檔,但我不確定我是否理解這一點。結束點()是什麼?謝謝btw! – KingNestor 2010-08-18 21:02:46
@KingNestor -'.end()'將鏈接回克隆,否則您將爲輸入元素獲取'.html(),而不是整個'#ReportHeader'元素,因此無論何時一個遍歷語句可以改變你正在使用的元素(比如'.find()'),它會在變化發生之前使鏈回到處理元素的狀態。 – 2010-08-18 21:08:40