我有一个动态创建行的表。在最后一列的每一行中,我需要一个按钮来显示/隐藏您按下按钮的那行下的不可见行。
我有一个代码,但按钮显示/隐藏在第一行和下一行中没有任何反应。
这是我的代码:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script>
$(function () {
$('#show_more').on('click',function(){
var id_item = $(".btn").attr( "id-data" );
$('.hidden_row_'+id_item).addClass('hidden_row_sh').removeClass('hidden_row_hide');
$("#wh_tbl tr.hidden_row_"+id_item).fadeIn(400);
$(this).hide();
$('#show_less').show();
});
$('#show_less').on('click',function(){
var id_item = $(".btn").attr( "id-data" );
$('.hidden_row_'+id_item).addClass('hidden_row_hide').removeClass('hidden_row_sh');
$("#wh_tbl tr.hidden_row_"+id_item).fadeOut(400);
$(this).hide();
$('#show_more').show();
});
});
</script>
<style>
table.ranking-table, tr, td, th {
border-collapse:collapse;
}
.hidden_row_hide {
display:none;
}
.hidden_row_sh {
display:table-row;
}
#show_more .sign:after {
content:"⇩";
}
#show_less .sign:after {
content:"⇧";
}
button.btn {
font-weight: bold;
color: #666;
width:100%;
background:none;
border:none;
}
button.btn:focus {
outline:0;
}
</style>
</head>
<body>
<table id="wh_tbl" class="ranking-table" border="1">
<thead>
<tr>
<th>#</th>
<th style="text-align:center;">th_col2</th>
<th style="text-align:center;">th_col3</th>
<th style="text-align:center;">th_col4</th>
<th style="text-align:center;">th_col5</th>
<th style="text-align:center;">th_col6</th>
<th style="text-align:center;">th_col7</th>
</tr>
</thead>
<tbody>
<?php
for($i = 0; $i <= 10; $i++)
{
echo '
<tr>
<td>'.$i.'</td>
<td style="text-align:center;">Text_'.$i.'</td>
<td style="text-align:center;">data_'.$i.'</td>
<td style="text-align:center;">web_'.$i.'</td>
<td style="text-align:center;">xxx_'.$i.'</td>
<td style="text-align:center;">yyy_'.$i.'</td>
<td style="text-align:center;">
<div id="show_more">
<button class="btn" id-data="'.$i.'" >Pokaż <span class="sign"></span></button>
</div>
<div id="show_less" class="hidden_row_hide">
<button class="btn" id-data="'.$i.'" >Ukryj <span class="sign"></span></button>
</div>
</td>
</tr>
<tr class="hidden_row_'.$i.' hidden_row_hide">
<td></td>
<td>col'.$i.'1</td>
<td>col'.$i.'2</td>
<td>col'.$i.'3</td>
<td>col'.$i.'4</td>
<td>col'.$i.'5</td>
<td>col'.$i.'6</td>
</tr>';
}
?>
</tbody>
</table>
</body>
</html>
答案 0 :(得分:1)
您需要为每个元素添加唯一的id
,因此请将id
更改为class
,如下所示: -
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(function () {
$('.show_more').on('click',function(){
$(this).closest('tr').next('tr').removeClass('hidden_row_hide');
$(this).hide();
$(this).next('.show_less').show();
});
$('.show_less').on('click',function(){
$(this).closest('tr').next('tr').addClass('hidden_row_hide');
$(this).hide();
$(this).prev('.show_more').show();
});
});
</script>
<style>
table.ranking-table, tr, td, th {
border-collapse:collapse;
}
.hidden_row_hide {
display:none;
}
.hidden_row_sh {
display:table-row;
}
.show_more .sign:after {
content:"⇩";
}
.show_less .sign:after {
content:"⇧";
}
button.btn {
font-weight: bold;
color: #666;
width:100%;
background:none;
border:none;
}
button.btn:focus {
outline:0;
}
</style>
</head>
<body>
<table id="wh_tbl" class="ranking-table" border="1">
<thead>
<tr>
<th>#</th>
<th style="text-align:center;">th_col2</th>
<th style="text-align:center;">th_col3</th>
<th style="text-align:center;">th_col4</th>
<th style="text-align:center;">th_col5</th>
<th style="text-align:center;">th_col6</th>
<th style="text-align:center;">th_col7</th>
</tr>
</thead>
<tbody>
<?php
for($i = 0; $i <= 10; $i++)
{
echo '
<tr>
<td>'.$i.'</td>
<td style="text-align:center;">Text_'.$i.'</td>
<td style="text-align:center;">data_'.$i.'</td>
<td style="text-align:center;">web_'.$i.'</td>
<td style="text-align:center;">xxx_'.$i.'</td>
<td style="text-align:center;">yyy_'.$i.'</td>
<td style="text-align:center;">
<div class="show_more">
<button class="btn" id-data="'.$i.'" >Pokaż <span class="sign"></span></button>
</div>
<div class="show_less hidden_row_hide">
<button class="btn" id-data="'.$i.'" >Ukryj <span class="sign"></span></button>
</div>
</td>
</tr>
<tr class="hidden_row_'.$i.' hidden_row_hide">
<td></td>
<td>col'.$i.'1</td>
<td>col'.$i.'2</td>
<td>col'.$i.'3</td>
<td>col'.$i.'4</td>
<td>col'.$i.'5</td>
<td>col'.$i.'6</td>
</tr>';
}
?>
</tbody>
</table>
</body>
</html>