如何使用 jQuery jScroll 滚动 table 行?
How to scroll table rows with jQuery jScroll?
jQuery
jscroll
没有太多有用的示例,事实上它默认情况下不适用于 table 行,因为它将结果放入 div 元素搞砸了 table.
我有这个 HTML 模板
<table class="table responsive-table-list">
<thead>
<tr>
<th>label 1</th>
<th>label 2</th>
<th>label 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>data 1.1</td>
<td>data 1.2</td>
<td>data 1.3</td>
</tr>
<tr>
<td>data 2.1</td>
<td>data 2.2</td>
<td>data 2.3</td>
</tr>
<tbody>
</table>
如何让它成为 jScrollable?
您需要自己的控制器来提供数据。这不是此解决方案的一部分。这种情况下的输出必须是 HTML 并且必须包含 table.
的接下来的 X 行
HTML 模板包含一个额外的 div。下一页 link(指向控制器)作为新行添加。 jscroll
将删除 A
和 TD
标签,但不会删除 TR
,因为它不知道。我们必须稍后再做,否则空的 TR
标签会破坏 HTML
。
我在可以从 javascript 代码访问的 data
参数中传递 auto-trigger
和 loading-html
。
我在 A
标签中使用 nextPageLoad
class 这有助于我识别 jscroll
相关的 link.
<div class="jscroll" data-auto-trigger="true" data-loading-html="Loading..">
<table class="table responsive-table-list">
<thead>
<tr>
<th>label 1</th>
<th>label 2</th>
<th>label 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>data 1.1</td>
<td>data 1.2</td>
<td>data 1.3</td>
</tr>
<tr>
<td>data 2.1</td>
<td>data 2.2</td>
<td>data 2.3</td>
</tr>
<tr>
<td colspan="3">
<a href="/link-to-action-for-the-next-rows" class="nextPageLoad">Next page</a>
</td>
</tr>
<tbody>
</table>
</div>
javascript 代码。调试已激活!
var EndlessScroll = (function ($) {
function init() {
var $scrollEl = $('.jscroll');
var autoTrigger = $scrollEl.data('auto-trigger');
var loadingHtml = $('<span>');
loadingHtml.text($scrollEl.data('loading-html'));
$scrollEl.jscroll({
loadingHtml: loadingHtml[0].outerHTML,
padding: 20,
autoTrigger: autoTrigger,
nextSelector: '.nextPageLoad',
callback: function (data) {
var $table = $('.jscroll table tbody');
// moves the new elements from the jscroll div to the table
$('.jscroll-added tr').appendTo($table);
// removes the empty tr encapsulated the jscroll pagination
var rows = $table.find('tr');
rows.each(function(idx, el){
if ($(el).children().length === 0) {
$(el).remove();
}
});
},
debug: true
});
}
return {
init: init
};
})(jQuery);
$(EndlessScroll.init);
jQuery
jscroll
没有太多有用的示例,事实上它默认情况下不适用于 table 行,因为它将结果放入 div 元素搞砸了 table.
我有这个 HTML 模板
<table class="table responsive-table-list">
<thead>
<tr>
<th>label 1</th>
<th>label 2</th>
<th>label 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>data 1.1</td>
<td>data 1.2</td>
<td>data 1.3</td>
</tr>
<tr>
<td>data 2.1</td>
<td>data 2.2</td>
<td>data 2.3</td>
</tr>
<tbody>
</table>
如何让它成为 jScrollable?
您需要自己的控制器来提供数据。这不是此解决方案的一部分。这种情况下的输出必须是 HTML 并且必须包含 table.
的接下来的 X 行HTML 模板包含一个额外的 div。下一页 link(指向控制器)作为新行添加。 jscroll
将删除 A
和 TD
标签,但不会删除 TR
,因为它不知道。我们必须稍后再做,否则空的 TR
标签会破坏 HTML
。
我在可以从 javascript 代码访问的 data
参数中传递 auto-trigger
和 loading-html
。
我在 A
标签中使用 nextPageLoad
class 这有助于我识别 jscroll
相关的 link.
<div class="jscroll" data-auto-trigger="true" data-loading-html="Loading..">
<table class="table responsive-table-list">
<thead>
<tr>
<th>label 1</th>
<th>label 2</th>
<th>label 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>data 1.1</td>
<td>data 1.2</td>
<td>data 1.3</td>
</tr>
<tr>
<td>data 2.1</td>
<td>data 2.2</td>
<td>data 2.3</td>
</tr>
<tr>
<td colspan="3">
<a href="/link-to-action-for-the-next-rows" class="nextPageLoad">Next page</a>
</td>
</tr>
<tbody>
</table>
</div>
javascript 代码。调试已激活!
var EndlessScroll = (function ($) {
function init() {
var $scrollEl = $('.jscroll');
var autoTrigger = $scrollEl.data('auto-trigger');
var loadingHtml = $('<span>');
loadingHtml.text($scrollEl.data('loading-html'));
$scrollEl.jscroll({
loadingHtml: loadingHtml[0].outerHTML,
padding: 20,
autoTrigger: autoTrigger,
nextSelector: '.nextPageLoad',
callback: function (data) {
var $table = $('.jscroll table tbody');
// moves the new elements from the jscroll div to the table
$('.jscroll-added tr').appendTo($table);
// removes the empty tr encapsulated the jscroll pagination
var rows = $table.find('tr');
rows.each(function(idx, el){
if ($(el).children().length === 0) {
$(el).remove();
}
});
},
debug: true
});
}
return {
init: init
};
})(jQuery);
$(EndlessScroll.init);