複数の行を形成するために、ループ内でテーブル行<tr>
を生成するテーブルがあります。
各<a>
に個別の<tr>
リンクを付与したい。テーブルでは<td>
にのみデータを追加できるため、それを実現することはできません。
これを達成する他の方法はありますか?
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>
jQuery ライブラリを使用するJavaScript:
$(document).ready(function(){
$('table tr').click(function(){
window.location = $(this).attr('href');
return false;
});
});
ここでこれを試すことができます: http://jsbin.com/ikada
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;
}
@ 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;
});
});
テーブルの行をリンクに変える最も簡単な方法は、window.locationでonclick属性を使用することです。
<table>
<tr onclick="window.location='/just/a/link.html'">
<td></td>
</tr>
</table>
各_<tr>
_をクリック可能にする場合は、click
イベントを各_<tr>
_に追加できます。さらに、.delegate()
を追加することもできます。 _<tr>
_要素のクリックを管理するtable
のハンドラー。
_$('#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コードを投稿してください。
最初の回答に同意します。詳細情報が必要です。しかし、リンクのテーブルを作成しようとしているだけの場合は、
<tr><td><a href="...">...</a></td></tr>
プレミアム提案は、テーブルを生成するときにタグを追加することです。テーブルがレンダリングされた後にそれを行う必要があり、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>";
}
}
これがお役に立てば幸いです
PHP:
echo "<tr onclick=\"window.location='".$links[$i]."'\">......";
JQueryなしのJavaScript:
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';
.
}
<tr><td><a></a></td></tr>
この?
jQuery.wrap
td
に返されたアンカー、次にtr
および jQuery.appendTotable
に追加します
$('ith anchor element in array').wrap('<td />').wrap('<tr />').appendTo('table#table_id');
data-href
スクリプトを使用して、任意のhtml要素にhrefを追加できます。要素にdata-href
属性のみを追加するため、htmlが有効になります。
Nicoleが提案したように、withとinsideを単純に生成できます。
<tr><td><a href="url">title of the url</a></td></tr>
または、jQueryが含まれている場合のように、URLをtrタグに挿入します
$('tr.clickable').click(function(){
window.location = $(this).attr("title");
});
クリックでそのページに移動します(基本的に、タグのように機能するようにtrをハックします(ただ考えて、実際に試してはいけません)。
加える
表示スタイルを表示に変更:ブロック
このように同じサイズを追加します:
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>