2013-06-21 22 views
0

我有一個30行的表。我想要做的是按默認顯示前5行,如果點擊「顯示5更多」,則再顯示5行。如何在每次使用jQuery時在表中顯示5個附加行?

所以默認情況下只顯示5個「Show 5 More」,然後再顯示5個,現在用戶看到10行。點擊「顯示5更多」,然後你可以看到15行。等等,第四。

我該怎麼做?有沒有這個jQuery插件?

+0

您可以使用數據表插件。它有分頁。 – user1

+0

我試過使用datatables插件,但它不支持colspan,在這種情況下,我需要「colspan」 – Mike

回答

1

第一種方法:使用append()功能

HTML

<table class="table"> 
    <thead> 
    <tr> 
     <th>#</th> 
     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Username</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr class="template"> 
     <td class="num">5</td> 
     <td>Larry</td> 
     <td>the Bird</td> 
     <td>@twitter</td> 
    </tr> 
    <tr> 
     <td>1</td> 
     <td>Mark</td> 
     <td>Otto</td> 
     <td>@mdo</td> 
    </tr> 
    <tr> 
     <td>2</td> 
     <td>Jacob</td> 
     <td>Thornton</td> 
     <td>@fat</td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>Larry</td> 
     <td>the Bird</td> 
     <td>@twitter</td> 
    </tr> 
     <tr> 
     <td>4</td> 
     <td>Larry</td> 
     <td>the Bird</td> 
     <td>@twitter</td> 
    </tr> 
    <tr> 
     <td>5</td> 
     <td>Larry</td> 
     <td>the Bird</td> 
     <td>@twitter</td> 
    </tr> 
    </tbody> 
</table> 

<button class="btn">Show more</button> 

的Javascript

// number of rows seen by default 
var n = 5; 

// click on the "Show more" button 
$(".btn").on("click", function() { 
    // how many rows to add? 
    var howMany = 1; 

    // call ajax, if you use it and the following 
    // code will go to ajax callback   

    // add rows 
    for (var i = 0; i < howMany; ++i) { 
     appendItem(); 
    } 
}); 

function appendItem() { 
    // clone item 
    var item = $(".template").clone().removeClass("template"); 
    // set its data 
    item.find(".num").text(++n); 
    // append it 
    $("tbody").append(item); 
} 

JSFIDDLE

方法二:使用fadeIn()/show()功能

HTML

<table class="table"> 
    <thead> 
    <tr> 
     <th>#</th> 
     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Username</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr class="template"> 
     <td class="num">5</td> 
     <td>Larry</td> 
     <td>the Bird</td> 
     <td>@twitter</td> 
    </tr> 
    <!-- THE HTML IS GENERATED BY JQUERY --> 
    </tbody> 
</table> 

<button class="btn">Show more</button> 

的Javascript

// ================= GENERATE DUMMY TABLE 
var n = 0; 
var TOTAL_ROWS = 30; 
for (var i = 0; i < TOTAL_ROWS; ++i) { 
    appendItem(); 
} 


function appendItem() { 
    var item = $(".template").clone().removeClass("template"); 
    item.find(".num").text(++n); 
    item.addClass("table-item"); 
    item.hide(); 
    $("tbody").append(item); 
} 

// ================= SHOW ONLY FEW ROWS BY DEFAULT 

var howMany = 5; 
showDefaultRows(); 

function showDefaultRows() { 
    var complete = 0; 

    $(".table-item").each(function() { 

     if (++complete > howMany) { 
      return; 
     } 
     $(this).show(); 
    }); 
} 

// ================= ON CLICK 

$(".btn").on("click", function() { 

    var complete = 0; 
    var showMore = 5; 
    howMany += showMore; 
    $(".table-item").each(function() { 
     if (++complete > howMany) { 
      return; 
     } 

     $(this).fadeIn(); 
    }); 
}); 

JSFIDDLE

+0

不要相信他從AJAX加載任何東西,好像所有的行都已經存在。 –

+0

@AndrewPeacock我已經更新了我的答案。 –

+0

@AndrewPeacock謝謝你的回答。您的代碼正在附加行。我想展現更多。所有記錄都在頁面打開後預先加載,但我不想在默認情況下顯示所有記錄,因爲用戶不需要看到通過5,但在某些原因中他們可能想要看到通過5,所以我有此按鈕如果他們想看更多的話,更多地展示他們。所以我需要顯示/隱藏不附加。我怎樣才能做到這一點?謝謝 – Mike

相關問題