データのテーブルがあり、各行にはチェックボックスがあり、チェックすると、ユーザーがその行を印刷されたテーブルに含めることを希望していることを示します。行がチェックされると、JQueryは印刷クラスを:に追加します。
$("td .checkbox").click(function(e){
if (this.checked) {
$("#tr-"+this.id).addClass("print");
} else {
$("#tr-"+this.id).removeClass("print");
}
});
編集:HTMLを追加して、以下の回答のIDとクラスを表示します...
<tr id="tr-print-0" class="search-line-item-0 print">
<td>data</td>
<td>data...</td>
<td><input type="checkbox" id="print-0" name="print-0"></td>
</tr>
<tr id="tr-print-1" class="search-line-item-1">...
<tr id="tr-print-2" class="search-line-item-0">...
次に、CSSファイルに@media print {}があり、行の表示をnoneまたはblockに設定します。
tr.search-line-item-0, tr.search-line-item-1 {
display: none;
}
tr.search-line-item-0.print, tr.search-line-item-1.print {
display: block;
}
問題は、ページを印刷すると、display:blockのある行のみが表示されることです。これは意図した動作ですが、各行が最初の列の内側にレンダリングされているように見えます(最初の行はに<th>
またがり<tr>
、他<th>
のすべての行はそれらの下には何もありません)。これまでのところ、ChromeとFirefoxでのみテストされており、問題は両方のブラウザで同じです。
目標は、他のウィンドウを開いたり、iframeを使用したりせずに、行をすばやくチェックして印刷する方法を用意することです。したがって、誰かがうまくいく代替ソリューションを知っているなら:)