我预先加载一个包含所有行的表。但是,我只想显示<tbody>
标记内的前10行,现在只显示表格中的每个<tr>
。
所以这就是我到目前为止所做的:
var trs = $("#internalActivities > table > tbody > tr");
trs.hide();
trs.slice(0, 9).show();
$("#seeMoreRecords").click(function (e) {
e.preventDefault();
$("#internalActivities tr:hidden").slice(0, 10).show();
});
$("#seeLessRecords").click(function (e) {
e.preventDefault();
$("#internalActivities tr").slice(9, 19).hide();
});
上面代码的问题是:
<tr>
标记查找<tbody>
。seeMoreRecords
。seeLessRecords
按钮。 最后看我的脚本默认显示10行,如果用户点击查看更多,那么你会看到10行。所以它一次增加10,一旦你达到最大值,然后隐藏看到更多按钮。只有在显示的行数超过10行时才能看到更少的内容。
答案 0 :(得分:11)
您可以使用选择器$("#internalActivities tr")
来选择所有<tr>
,无论<tbody>
是否
您需要将当前显示的索引保存在单独的变量中,或根据选择的元素数量计算当前索引(使用.length
属性)
检查显示的元素的当前计数并显示/隐藏相应的按钮。
<table id="internalActivities">
</table>
<input type="button" id="seeMoreRecords" value="More">
<input type="button" id="seeLessRecords" value="Less">
for (var i=0;i<21;i++) {
$('#internalActivities').append('<tr><td>my data</td></tr>');
}
var trs = $("#internalActivities tr");
var btnMore = $("#seeMoreRecords");
var btnLess = $("#seeLessRecords");
var trsLength = trs.length;
var currentIndex = 10;
trs.hide();
trs.slice(0, 10).show();
checkButton();
btnMore.click(function (e) {
e.preventDefault();
$("#internalActivities tr").slice(currentIndex, currentIndex + 10).show();
currentIndex += 10;
checkButton();
});
btnLess.click(function (e) {
e.preventDefault();
$("#internalActivities tr").slice(currentIndex - 10, currentIndex).hide();
currentIndex -= 10;
checkButton();
});
function checkButton() {
var currentLength = $("#internalActivities tr:visible").length;
if (currentLength >= trsLength) {
btnMore.hide();
} else {
btnMore.show();
}
if (trsLength > 10 && currentLength > 10) {
btnLess.show();
} else {
btnLess.hide();
}
}
我创建了jsFiddle demo以查看此操作。
答案 1 :(得分:0)
1)如果你不仅需要使用tbody标签的tr标签,那么将jquery select重写为
$("#internalActivities > table tr");
2)您可以获取行数并在切片中使用该计数
var $records = $("#internalActivities tr");
$records.slice($records.length - 10, $records.length).hide();
3)检查seeMoreRecords单击事件处理程序中隐藏行的计数
if ($("#internalActivities tr:hidden").length === 0) {
$("#seeMoreRecords").hide();
}
4)检查显示的行数
if ($("#internalActivities tr").not(":hidden").length <= 10) {
$("#seeLessRecords").hide();
}