2013-05-14 13 views
1

我有一個問題。我試圖創建一個非常簡單的打印預覽,當用戶點擊Print Preview按鈕時,它會打開一個新窗口並複製我想要的數據。有一些元素像複選框,我不想包括但我能夠成功地完成。我的問題是當新窗口加載時,原始的div也被改變了。就像複選框在原始div中被刪除一樣,Print按鈕也會出現。jquery - 如何正確地從div複製數據到新窗口動態

我想我的原始div是divData保持不變。我沒有新窗口的問題。

順便說一下我的jQuery代碼如下所示:

 $("#btnPrintPreview").click (function() { 
      var printContents = new $("#divData"); 
      var myWindow = window.open("", "popup","width=1000,height=600,scrollbars=yes,resizable=yes," + 
       "toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0"); 
      var doc = myWindow.document; 
      doc.open(); 
      $(printContents).find(".tCheckboxes").remove(); 
      var button = "<input type='button' id='btnPrint' value='Print' style='float: right;' onclick='window.print();'/>"; 
      $(printContents).append($(button)); 
      doc.write($(printContents).html()); 
      doc.close(); 
     }); 

在這裏看到我的演示是鏈接http://jsfiddle.net/dU7et/

PS:點擊Print Preview後請檢查​​主div。

請幫我....

回答

3

對於這個你是想下面一行改變什麼:

// Before: 
var printContents = new $("#divData"); 
// After: 
var printContents = $("#divData").clone(); 

進一步參考見http://api.jquery.com/clone/

+0

感謝它的工作! – TheOnlyIdiot 2013-05-14 02:44:16

+0

@EricTung如果我想添加css到這個...我想要'printContents'的不同css和原始'#divData'的實際css。 – blue 2013-08-02 10:54:22

+0

@aks,.clone()的返回類型是一個選定的對象實例jQuery的。如果您創建了一組有範圍的樣式(例如:「.print-style div {some:css;} .print-style p {more:css;}」),您可以簡單地向新實體添加一個類,例如:printContents .addClass( 「打印樣式」); – 2013-08-31 19:45:11

相關問題