How to display 5 more rows of a table on the click on a button using jQuery

泪湿孤枕 提交于 2019-11-30 13:50:43
  1. You can use the selector $("#internalActivities tr") which will select all <tr>'s, regardless of a <tbody> or not

  2. You need to save the current displayed index in a separate variable, or calculate the current index based on how many elements are selected (use the .length property)

  3. Check the current count of elements displayed and show/hide the corresponding buttons.

Example

HTML

<table id="internalActivities">

</table>
<input type="button" id="seeMoreRecords" value="More">
<input type="button" id="seeLessRecords" value="Less">

Javascript

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();
    }

}

I created a jsFiddle demo to see this in action.

1) If you need the tr tags not only with the tbody tag then rewrite your jquery select to

$("#internalActivities > table tr");

2) You can get the number of rows and use that count in the slice

var $records = $("#internalActivities tr");
$records.slice($records.length - 10, $records.length).hide();

3) Check the count of hidden rows in the seeMoreRecords click event handler

if ($("#internalActivities tr:hidden").length === 0) {
    $("#seeMoreRecords").hide();
}

4) Check the count of shown rows

if ($("#internalActivities tr").not(":hidden").length <= 10) {
    $("#seeLessRecords").hide();
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!