title: jQuery-Plugin jqPrint - toggle visibility of print-control
body: <p>i'm using the jQuery Plugin <a href="http://plugins.jquery.com/project/jqPrint" rel="nofollow">jqPrint</a> to print only a container control on the page(in my case a Table). This "print-container" should be invisible by default (<code>display:none</code>).</p>
  
  <p>So i tried to toggle the visibility with the jQuery Functions <code>show/hide</code> or <code>toggle</code>.
  But the control will only be printed when it is visible by default.</p>
  
  <p>This is the print-button, i tried following without success:</p>
  
  <p>1.</p>
  
  <pre><code>&lt;input type="button" style="width:120px" onclick="javascript:$('#TblPrinterView').toggle().jqprint().toggle(); return false;" value="Print" title="Print" /&gt;  
  </code></pre>
  
  <p>2.</p>
  
  <pre><code>&lt;input type="button" style="width:120px" onclick="javascript:var tblprint=$('#TblPrinterView');tblprint.show();tblprint.jqprint();tblprint.hide(); return false;" value="Print" title="Print" /&gt;
  </code></pre>
  
  <p>As i already mentioned, the table will only be printed when its initially visible. Otherwise <code>show()</code> or <code>toggle()</code> will make it visible, the printer dialog is shown, but it won't be printed.</p>
  
  <p>Thank you in advance.</p>
  
  <p><strong>UPDATE</strong>:
  The solution was - thanks to waxolunist - to define a media print css. On this way i event don't need to toggle visibility of the printable-control. It can be invisible(display:none) by default.</p>
  
  <p>This is the jQuery function to print the control:</p>
  
  <pre><code>&lt;input type="button" style="width:120px" onclick="javascript:$('#TblPrinterView').jqprint(); return false;" value="Print" title="Print" /&gt;
  </code></pre>
  
  <p>and this is the stylesheet:</p>
  
  <pre><code>@media print 
  {
      .TblPrinterView{display:block;}
  }
  </code></pre>
  
  <p>Here is the <a href="http://plugins.jquery.com/project/jqPrint" rel="nofollow">Plugin</a>:</p>
  
  <pre><code>// -----------------------------------------------------------------------
  // Eros Fratini - eros@recoding.it
  // jqprint 0.3
  //
  // - 19/06/2009 - some new implementations, added Opera support
  // - 11/05/2009 - first sketch
  //
  // Printing plug-in for jQuery, evolution of jPrintArea: http://plugins.jquery.com/project/jPrintArea
  // requires jQuery 1.3.x
  //
  // Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
  //------------------------------------------------------------------------
  
  (function($) {
      var opt;
  
      $.fn.jqprint = function (options) {
          opt = $.extend({}, $.fn.jqprint.defaults, options);
  
          var $element = (this instanceof jQuery) ? this : $(this);
  
          if (opt.operaSupport &amp;&amp; $.browser.opera) 
          { 
              var tab = window.open("","jqPrint-preview");
              tab.document.open();
  
              var doc = tab.document;
          }
          else 
          {
              var $iframe = $("&lt;iframe  /&gt;");
  
              if (!opt.debug) { $iframe.css({ position: "absolute", width: "0px", height: "0px", left: "-600px", top: "-600px" }); }
  
              $iframe.appendTo("body");
              var doc = $iframe[0].contentWindow.document;
          }
  
          if (opt.importCSS)
          {
              if ($("link[media=print]").length &gt; 0) 
              {
                  $("link[media=print]").each( function() {
                      doc.write("&lt;link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' /&gt;");
                  });
              }
              else 
              {
                  $("link").each( function() {
                      doc.write("&lt;link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' /&gt;");
                  });
              }
          }
  
          if (opt.printContainer) { doc.write($element.outer()); }
          else { $element.each( function() { doc.write($(this).html()); }); }
  
          doc.close();
  
          (opt.operaSupport &amp;&amp; $.browser.opera ? tab : $iframe[0].contentWindow).focus();
          setTimeout( function() { (opt.operaSupport &amp;&amp; $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000);
      }
  
      $.fn.jqprint.defaults = {
          debug: false,
          importCSS: true, 
          printContainer: true,
          operaSupport: true
      };
  
      // Thanks to 9__, found at http://users.livejournal.com/9__/380664.html
      jQuery.fn.outer = function() {
        return $($('&lt;div&gt;&lt;/div&gt;').html(this.clone())).html();
      } 
  })(jQuery);
  </code></pre>