Как добавить гиперссылку на строку таблицы <tr> - PullRequest
13 голосов
/ 08 января 2011

У меня есть таблица со строкой таблицы <tr>, которая генерируется в цикле для формирования нескольких строк.

Я хочу дать отдельную <a> ссылку на каждый <tr>. Поскольку в таблицу мы можем добавлять только данные только к <td>, я не могу этого достичь.

Есть ли другой способ добиться этого?

Ответы [ 12 ]

29 голосов
/ 08 января 2011

HTML:

<table>
    <tr href="http://myspace.com">
      <td>MySpace</td>
    </tr>
    <tr href="http://apple.com">
      <td>Apple</td>
    </tr>
    <tr href="http://google.com">
      <td>Google</td>
    </tr>
</table>

JavaScript с использованием jQuery Библиотека:

$(document).ready(function(){
    $('table tr').click(function(){
        window.location = $(this).attr('href');
        return false;
    });
});

Вы можете попробовать это здесь: http://jsbin.com/ikada3

CSS(необязательно):

table tr {
    cursor: pointer;
}

ИЛИ верная HTML-версия с data-href вместо href:

<table>
    <tr data-href="http://myspace.com">
      <td>MySpace</td>
    </tr>
    <tr data-href="http://apple.com">
      <td>Apple</td>
    </tr>
    <tr data-href="http://google.com">
      <td>Google</td>
    </tr>
</table>

JS:

$(document).ready(function(){
    $('table tr').click(function(){
        window.location = $(this).data('href');
        return false;
    });
});

CSS:

table tr[data-href] {
    cursor: pointer;
}
10 голосов
/ 01 ноября 2012

Воспроизведение @ ahmet2016 и поддержание его в стандарте W3C.

HTML:

<tr data-href='LINK GOES HERE'>
    <td>HappyDays.com</td>
</tr>

CSS:

*[data-href] {
    cursor: pointer;
}

JQuery:

$(function(){       
    $('*[data-href]').click(function(){
        window.location = $(this).data('href');
        return false;
    });
});
8 голосов
/ 02 ноября 2012

Самый простой способ превратить строку таблицы в ссылку - это использовать атрибут onclick с window.location.

<table>
<tr onclick="window.location='/just/a/link.html'">
<td></td>
</tr>
</table>
2 голосов
/ 08 января 2011

Если вы говорите, что хотите сделать каждый <tr> кликабельным, вы можете добавить событие click к каждому <tr> или, что еще лучше, добавить обработчик .delegate() к table, который управляет нажимает на его <tr> элементов.

$('#myTable').delegate('tr','click',function() {
    alert( 'i was clicked' );
});

Этот код предполагает, что ваш table имеет myTable ID:

<table id="myTable">
    <tr><td> cell </td></tr>
    <tr><td> cell </td></tr>
</table>

Если вы не это имели в виду, уточните свой вопрос и опубликуйте соответствующий код JavaScript, который вы используете.

1 голос
/ 08 января 2011

PHP:

echo "<tr onclick=\"window.location='".$links[$i]."'\">......";

Javascript без jQuery:

 x=1;
 .
 .
 for (...) {
   var tr=document.createElement('tr');
   tr.onclick=function() { window.location='page'+(x++)+'.html'}
   tr.style.cursor='pointer';
 .
 }

позволит пользователю щелкнуть по каждой строке, которую вы можете использовать для загрузки страниц и массива:

 x=0;
 var pages=["pagea.html","pageb.html"]
 .
 .
 for (...) {
   var tr=document.createElement('tr');
   tr.onclick=function() { window.location=page[x++];}
   tr.style.cursor='pointer';
 .
 }
1 голос
/ 08 января 2011

Рекомендуется добавить теги при создании таблицы.Если вам нужно сделать это после рендеринга таблицы и вы хотите использовать javascript, вы всегда можете добавить что-то вроде

var mytable = document.getElementById("theTable")
var myrows = mytable.rows

for(i=0;i < myrows.length;i++)
{
  var oldinner;
  oldinner = myrows[i].cells[0].innerHTML;
  myrows[i].cells[0].innerHTML = "<a>" + oldinner + "</a>";
}

или если вам нужно сделать это в каждой ячейке, вы всегда можете

var mytable = document.getElementById("theTable")
var myrows = mytable.rows

for(i=0;i < myrows.length;i++)
{
  mycells = myrows[i].cells;

  for(a=0;a < mycells.length;a++)
  {
    var oldinner;
    oldinner = mycells[a].innerHTML;
    mycells[a].innerHTML = "<a>" + oldinner + "</a>";
  }
}

Надеюсь, вы найдете это полезным

1 голос
/ 08 января 2011

Я согласен с первым ответом, нужна дополнительная информация.Но если вы просто пытаетесь создать таблицу ссылок, вы можете просто сделать

<tr><td><a href="...">...</a></td></tr>
0 голосов
/ 02 декабря 2013

Вы можете использовать скрипт data-href для добавления href в любые элементы html.Это делает html действительным, так как он добавляет только атрибут data-href к элементу.

https://github.com/nathanford/data-href/

0 голосов
/ 08 января 2011

добавить

и изменить стиль отображения для отображения: блок

и добавьте такой же размер для этого:

CSS:

#Table a {
display:block;
}
#Table td {
width:100px;
hright:100px
}

HTML:

<table id="Table">
    <tr><td><a onclick="" href="#"> cell </a></td></tr>
    <tr><td> cell </td></tr>
</table>
0 голосов
/ 08 января 2011

Вы можете просто генерировать с и внутри, как предложила Николь:

<tr><td><a href="url">title of the url</a></td></tr>

Или введите URL в тег tr С включенным JQuery

$('tr.clickable').click(function(){
  window.location = $(this).attr("title");
});

чтобы перейти на эту страницу по щелчку (в основном, взломать tr для работы как тега (просто мысль, никогда не пытайтесь это сделать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...