对于此HTML代码:
<table>
<tr><td>Visible</td></tr>
<tr><td>Visible</td></tr>
<tr><td>Visible</td></tr>
<!-- etc... -->
<tr style="display:none"><td>Hidden</td></tr>
<tr style="display:none"><td>Hidden</td></tr>
<tr style="display:none"><td>Hidden</td></tr>
<!-- etc... -->
<tr><td><a class="show-5-more">Show 5 More</a></td></tr>
</table>
这是我到目前为止所获得的jQuery代码:
//show 5 more table rows (that were previously hidden)
$('a.show-5-more').click(function() {
alert('clicked!');
return false;
});
我该怎么做:
slideDown()
表格行答案 0 :(得分:2)
这将向下滑动单击链接的同一个表中的前五个隐藏行:
$('a.show-5-more').click(function() {
$(this).closest("table").find("tr:hidden:lt(5)").slideDown();
return false;
});
如果你想一个接一个地向下滑动,你有两个选择。可能最简单的方法是使用超时来有效地将它们链接在一起:
$('a.show-5-more').click(function() {
$(this).closest("table").find("tr:hidden:lt(5)").stop().each(function(i, val) {
slide_down(this, i, 600);
});
return false;
});
function slide_down(el, i, delay) {
setTimeout(function() {
$(el).slideDown(delay);
}, i * delay);
}
或者,您可以尝试将slideDown()
上的回调链接在一起。
我在这种情况下建议的是使用<tbody>
使更多更容易实现:
<table>
<tbody>
<tr><td>Visible</td></tr>
<tr><td>Visible</td></tr>
<tr><td>Visible</td></tr>
...
</tbody>
<tbody style="display: none;">
<tr><td>Hidden</td></tr>
<tr><td>Hidden</td></tr>
<tr><td>Hidden</td></tr>
...
</tbody>
<tbody style="display: none;">
<tr><td>Hidden</td></tr>
<tr><td>Hidden</td></tr>
<tr><td>Hidden</td></tr>
...
</tbody>
<tr><td><a class="show-5-more">Show 5 More</a></td></tr>
</table>
然后:
$('a.show-5-more').click(function() {
$(this).closest("table").find("tbody:hidden:first").slideDown("slow");
return false;
});
对于这类事情,将行分组更为直接。
答案 1 :(得分:0)
要显示5次,您可以使用
$(function() {
$('.show-5-more').click(function() {
$(this).closest('table').data('row', 0);
slideDownNext.call(this);
});
});
function slideDownNext() {
var $table = $(this).closest('table');
if($table.data('row') < 5) {
$table.data('row', $table.data('row') + 1);
$table.find('tr:hidden:first').slideDown('', slideDownNext);
}
}