답변:
이를 수행하는 두 가지 방법이 있습니다.
자바 스크립트 사용 :
<tr onclick="document.location = 'links.html';">
앵커 사용 :
<tr><td><a href="">text</a></td><td><a href="">text</a></td></tr>
두 번째 작업은 다음을 사용하여 만들었습니다.
table tr td a {
display:block;
height:100%;
width:100%;
}
열 사이의 데드 스페이스를 제거하려면 다음을 수행하십시오.
table tr td {
padding-left: 0;
padding-right: 0;
}
다음은 두 번째 예제의 간단한 데모입니다. DEMO
사용자 지정 jquery 함수를 만들었습니다.
<tr data-href="site.com/whatever">
$('tr[data-href]').on("click", function() {
document.location = $(this).data('href');
});
나를 위해 쉽고 완벽합니다. 도움이되기를 바랍니다.
(나는 OP가 CSS와 HTML만을 원한다는 것을 알고 있지만 jQuery를 고려하십시오)
데이터 속성을 사용하여 Matt Kantor와 동의했습니다. 위의 수정 된 답변
data-href
또는 어떤 것을 사용할 것 입니다.
<table class='tr_link' >
제공하십시오 .tr_link{cursor:pointer}
.
tr[data-href] { cursor: pointer }
스타일 시트에
지원하는 브라우저를 사용하는 경우 CSS를 사용하여을 <a>
테이블 행으로 변환 할 수 있습니다 .
.table-row { display: table-row; }
.table-cell { display: table-cell; }
<div style="display: table;">
<a href="..." class="table-row">
<span class="table-cell">This is a TD... ish...</span>
</a>
</div>
물론 블록 요소를 <a>
. 당신은 또한 이것을 일반과 섞을 수 없습니다<table>
테이블 을 사용해야하는 경우 각 테이블 셀에 링크를 넣을 수 있습니다.
<table>
<tbody>
<tr>
<td><a href="person1.html">John Smith</a></td>
<td><a href="person1.html">123 Fake St</a></td>
<td><a href="person1.html">90210</a></td>
</tr>
<tr>
<td><a href="person2.html">Peter Nguyen</a></td>
<td><a href="person2.html">456 Elm Ave</a></td>
<td><a href="person2.html">90210</a></td>
</tr>
</tbody>
</table>
그리고 링크가 전체 셀을 채우도록합니다.
table tbody tr td a {
display: block;
width: 100%;
height: 100%;
}
<div>
표 대신 s 를 사용할 수 있다면 HTML이 훨씬 더 간단해질 수 있으며 표 셀 사이의 링크에 "간격"이 생기지 않습니다.
<div class="myTable">
<a href="person1.html">
<span>John Smith</span>
<span>123 Fake St</span>
<span>90210</span>
</a>
<a href="person2.html">
<span>Peter Nguyen</span>
<span>456 Elm Ave</span>
<span>90210</span>
</a>
</div>
<div>
메서드 와 함께 사용되는 CSS는 다음과 같습니다 .
.myTable {
display: table;
}
.myTable a {
display: table-row;
}
.myTable a span {
display: table-cell;
padding: 2px; /* this line not really needed */
}
태그 로 <td>
요소를 래핑 할 수는 없지만 이벤트를 <a>
사용하여 함수 onclick
를 호출하면 유사한 기능을 수행 할 수 있습니다 . 다음 함수와 같은 예가 여기 에 있습니다.
<script type="text/javascript">
function DoNav(url)
{
document.location.href = url;
}
</script>
그리고 다음과 같이 테이블에 추가하십시오.
<tr onclick="DoNav('http://stackoverflow.com/')"><td></td></tr>
sirwilliam의 답변이 가장 적합합니다. 단축키 Ctrl + LeftClick (새 탭에서 페이지 열기)을 지원하여 자바 스크립트를 개선했습니다. 이벤트 ctrlKey
는 PC, metaKey
Mac 에서 사용됩니다 .
자바 스크립트
$('body').on('mousedown', 'tr[url]', function(e){
var click = e.which;
var url = $(this).attr('url');
if(url){
if(click == 2 || (click == 1 && (e.ctrlKey || e.metaKey))){
window.open(url, '_blank');
window.focus();
}
else if(click == 1){
window.location.href = url;
}
return true;
}
});
예
이 질문에 이미 답변이 있음을 알고 있지만 여전히이 페이지의 해결책이 마음에 들지 않습니다. JQuery를 사용하는 사람들을 위해 테이블 행에 <a>
태그 와 거의 동일한 동작을 제공 할 수있는 최종 솔루션을 만들었습니다 .
이것이 내 해결책입니다.
jQuery 예를 들어 표준 포함 자바 스크립트 파일에 이것을 추가 할 수 있습니다.
$('body').on('mousedown', 'tr[url]', function(e){
var click = e.which;
var url = $(this).attr('url');
if(url){
if(click == 1){
window.location.href = url;
}
else if(click == 2){
window.open(url, '_blank');
window.focus();
}
return true;
}
});
HTML 이제 HTML 내부의 모든 <tr>
요소 에 사용할 수 있습니다.
<tr url="example.com">
<td>value</td>
<td>value</td>
<td>value</td>
<tr>
document.querySelector('tr[url]').addEventListener("mousedown", function(e){ var click = e.which; var url = this.getAttribute("url"); if(url){ if(click == 1){ window.location.href = url; } else if(click == 2){ window.open(url, '_blank'); window.focus(); } return true; } });
<tr>
링크가있는 시뮬레이션을 원 하지만 html 표준을 존중할 때 이렇게합니다.
HTML :
<table>
<tr class="trLink">
<td>
<a href="#">Something</a>
</td>
</tr>
</table>
CSS :
tr.trLink {
cursor: pointer;
}
tr.trLink:hover {
/*TR-HOVER-STYLES*/
}
tr.trLink a{
display: block;
height: 100%;
width: 100%;
}
tr.trLink:hover a{
/*LINK-HOVER-STYLES*/
}
이런 식으로 누군가가 TR에 마우스를 올려 놓으면 모든 행 (및이 링크)이 호버 스타일을 갖게되고 여러 링크가 있음을 알 수 없습니다.
희망은 누군가를 도울 수 있습니다.
여기 바이올린
이 스레드와 다른 일부를 읽은 후 자바 스크립트에서 다음 솔루션을 생각해 냈습니다.
function trs_makelinks(trs) {
for (var i = 0; i < trs.length; ++i) {
if (trs[i].getAttribute("href") != undefined) {
var tr = trs[i];
tr.onclick = function () { window.location.href = this.getAttribute("href"); };
tr.onkeydown = function (e) {
var e = e || window.event;
if ((e.keyCode === 13) || (e.keyCode === 32)) {
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
this.click();
}
};
tr.role = "button";
tr.tabIndex = 0;
tr.style.cursor = "pointer";
}
}
}
/* It could be adapted for other tags */
trs_makelinks(document.getElementsByTagName("tr"));
trs_makelinks(document.getElementsByTagName("td"));
trs_makelinks(document.getElementsByTagName("th"));
그것을 사용하려면 다음과 같이 클릭 할 수 있기를 원하는 href를 tr / td / th에 넣으십시오 <tr href="http://stackoverflow.com">
. 그리고 tr 요소가 생성 된 후에 위의 스크립트가 실행되는지 확인하십시오 (배치 또는 이벤트 핸들러 사용).
단점은 TR이 div와 같은 링크처럼 작동 편집 : onkeydown, role 및 tabIndex를 설정하여 키보드 탐색이 작동하도록 만들었습니다. 마우스 만 필요한 경우 해당 부분을 제거 할 수 있습니다. 그래도 마우스를 올리면 상태 표시 줄에 URL이 표시되지 않습니다.display: table;
하지 않으며 키보드로 선택하거나 상태 텍스트를 갖지 않는다는 것입니다.
"tr [href]"CSS 선택기로 링크 TR의 스타일을 지정할 수 있습니다.
다른 방법이 있습니다. 특히 jQuery를 사용하여 데이터를 게시해야하는 경우
$(document).on('click', '#tablename tbody tr', function()
{
var test="something";
$.post("ajax/setvariable.php", {ID: this.id, TEST:test}, function(data){
window.location.href = "http://somepage";
});
});
변수 설정은 페이지를 읽고 작업 할 수있는 SESSIONS의 변수를 설정합니다.
창구 위치에 직접 게시하는 방법을 정말로 원하지만 가능하다고 생각하지 않습니다.