2012-08-28 2 views
0

데이터 표가 있으며 각 행에는 사용자가 해당 행을 인쇄 된 표에 포함 시키길 원하는 체크 표시가 있습니다. 행을 선택하면 JQuery와는에 인쇄 클래스를 추가합니다@media 인쇄에 대한 표 행 숨기기

$("td .checkbox").click(function(e){ 
    if (this.checked) { 
     $("#tr-"+this.id).addClass("print"); 
    } else { 
     $("#tr-"+this.id).removeClass("print"); 
    } 
}); 

편집 : 아래의 답변에 대한 ID와 클래스를 보여주기 위해 HTML을 추가 ...

<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 파일에 내가 가진 행의 표시를 none 또는 block으로 설정하는 @media print {}. 사용자가 페이지를 디스플레이 행만 인쇄 할 때

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; 
} 

문제가있다 : 블록 표시, 의도 된 동작이지만, 각각의 행은 첫 번째 열 (제 <th> 스팬 내부 렌더링되는 것 같습니다 <tr> 다음으로 다른 모든 <th>에는 그 아래에 아무 것도 없습니다. 지금까지 Chrome과 Firefox에서만 테스트되었으며 두 브라우저 모두에서 문제가 동일합니다.

목표는 다른 창을 열거 나 iframe을 사용하지 않고 행을 확인하고 인쇄하는 빠른 방법입니다. 그래서 아무도 작동하는 대체 솔루션을 알고 있다면 :)

+1

문제를 설명하는 전체 예제 (CSS가있는 HTML 문서)를 게시하십시오. 예를 들면 'th'요소를 참조하지만 코드 스 니펫에는 이러한 요소가 없습니다. 'tr :'에'display : block'을 설정해서는 안되며, 정상적인 상황에서는'tr :''display : table-row'가 있어야하기 때문에주의하십시오. –

+0

@ JukkaK.Korpela, 감사 표시 : table-row이 트릭을 수행했습니다. 게시하고 싶다면 정답으로 표시하겠습니다. – kreek

답변

1

는 테이블의 행으로 일반 렌더링을 얻을 수 display: table-row을 설정합니다.

2

선택자가 CSS와 자바 스크립트 사이에서 일치합니다. 귀하의 자바 스크립트에서 ID로 행을 호출하고있는 CSS에서 당신은 클래스와 행을보고 있습니다. 대신 display: block을 설정

$("td .checkbox").click(function(e){ 
    var $row = $("tr.search-line-item-"+this.id); 
    if (this.checked) { 
     $row.addClass("print"); 
    } else { 
     $row.removeClass("print"); 
    } 
}); 
+0

감사합니다. ID 명명 규칙이 더 명확 할 수 있음을 인정해야합니다. 설정 질문 ('tr'은 ID의 일부 임)을 보여주는 HTML에 추가되었습니다. 'print'클래스가 확실히 추가되면서 (웹킷에서 볼 수 있음) 인쇄 할 때 해당 클래스의 행만 표시됩니다. 문제는 올바르게 렌더링되지 않습니다. – kreek