2011-02-08 7 views
5

ONE 테이블 셀의 테두리 색상을 변경합니다jQuery를 : 여기 옵션의 간단한 HTML 테이블이

<table> 
    <tr> 
    <td>blue</td> 
    <td>green</td> 
    </tr> 
    <tr> 
    <td>red</td> 
    <td>cream</td> 
    </tr> 
</table> 

관련 스타일을 가진 CSS :

td { background-color: #FFF; border: 1px solid #3F3F3F; cursor: pointer; } 
td.selected { color: #D93A2C; border: 1px solid #D93A2C; } 

은 다음과 같습니다

HTML Table

표 셀 중 하나를 클릭하면 테두리가 필요합니다. 텍스트는 빨간색으로 표시됩니다. 그래서 jQuery를 사용하여 다음 코드를 사용하여 '.selected'클래스를 토글합니다. 결과가 이것이다 그러나

$('td').each(function(){ 
    $(this).click(function(){ 
     $(this).toggleClass('selected'); 
    }); 
}); 

: HTML Table Cells Selected

첫 번째 테이블 셀 (파란색)을 선택하면 내가 원하는대로 보이는 하나입니다. 선택한 셀의 모든 테두리를 강조 표시해야합니다.

달성 방법에 대한 아이디어가 있으십니까? 누군가가 더 좋은 방법을 제안 할 수 있다면 나는 테이블을 버리는 것에 반대하지 않습니다.

답변

6

이 나를 위해 잘 작동 :

<style type="text/css"> 
    table { border: 1px solid #000; border-collapse: collapse; } 
    td { border-top: 1px solid #000; border-left: 1px solid #000; } 
    td.selected { border: 1px solid #F00; } 
</style> 

<table> 
    <tr> 
     <td>blue</td> 
     <td>green</td> 
    </tr> 
    <tr> 
     <td>red</td> 
     <td class="selected">yellow</td> 
    </tr> 
</table> 
+0

위대한 작품! 고마워, 나는 국경 붕괴 재산에 대해 몰랐다. – nrj

0

DIV를 각 셀에 넣은 다음 DIV에 치료를 추가하는 것이 더 쉽습니다.

+1

DIV를 사용하면서 겪었던 문제는 테두리가 두 배로 늘어났다는 것입니다. 예를 들어, 1px 경계선을 가진 서로 옆에있는 2 개의 DIV는 그 (것)들 사이 2px 국경을 비치 할 것입니다. – nrj

0

여기서는 CSS이 유용 할 수 있습니다 (여기서는 문제입니다).

+0

나는 이것으로 엉망이 되려고 노력했다 ... CSS 개요는 테두리가 아닌 테두리 밖에있는 것처럼 보인다. 즉, 'td.selected'에 테두리를 지정하지 않아도 테두리가있는 곳에서 1px 밖에 나오지 않는다. – nrj

2

여기의 hack'ish 방법으로 작업을 끝내고 더 나은 것을 만들어 내기 위해 아이디어를 불러 일으킬 수 있습니다 ... 저는 브라우저에서 테스트를 완전히 마쳤지 만 IE8, 크롬, FF. Live example

HTML

<table> 
    <tbody> 
     <tr> 
      <td>XYZ</td> 
      <td>asdf</td> 
      <td>2346</td> 
     </tr> 
     <tr> 
      <td>XYZ</td> 
      <td>asdf</td> 
      <td>2346</td> 
     </tr> 
     <tr> 
      <td>XYZ</td> 
      <td>asdf</td> 
      <td>2346</td> 
     </tr> 
    </tbody> 
</table> 

JS

$('td').each(function(){ 
    $(this).click(function(){ 
     $(this).toggleClass('selected'); 
     $(this).prev('td').css('border-right','#ff0000'); 
     $(this).parent().prev('tr').find('td:nth-child('+(this.cellIndex+1)+')').css('border-bottom','#ff0000') 
    }); 
}); 

CSS

table{ 
     border-collapse: collapse; 
} 

td { border: 1px solid #ccc; padding:3px } 

.selected{ 
    border-color:#ff0000; 
    color:#ff0000; 
} 
.selected-bottom{ 
    border-bottom-color:#ff0000; 
} 
.selected-right{ 
    border-right-color:#ff0000; 
} 
+0

노력 해줘서 고맙지 만 jnpcl의 솔루션은 훨씬 깨끗합니다. – nrj

+0

감사합니다. 그렇습니다 : P +1. – subhaze