我正在使用nicescroll plugin处理一个简单的表。
在加载时,表格也会自动滚动到底部,我添加了一个按钮,该按钮添加了新行并也滚动到底部。
我的问题是,当我添加一个新的输入字段以根据用户输入生成行基时,它不会滚动到最后一行,有时会在中间跳动。
希望你能帮助我。
谢谢
这是我的sample code
// add scroll
$('tbody').niceScroll({autohidemode: false});
// add 1 row
$('button').click(function(){
var rowCount = $('table > tbody tr').length + 1;
$('tbody').append('<tr><td>item'+ rowCount +'</td><td>items</td><td>items</td><td>items</td><td>items</td></tr>');
$('tbody').animate({
scrollTop: $('tbody').get(0).scrollHeight}, 2000);
});
// scroll to bottom on load
$('tbody').animate({
scrollTop: $('tbody').get(0).scrollHeight}, 2000);
// generate rows
$('input').keyup(function(){
$('table tbody tr').remove();
$('tbody').animate({
scrollTop: $('tbody').get(0).scrollHeight}, 2000);
var rowCount = $('table > tbody tr').length + 1;
for(var i = 1; i <= $(this).val(); i++ ){
$('tbody').append('<tr><td>item'+ i +'</td><td>items</td><td>items</td><td>items</td><td>items</td></tr>');
}
});
// clear value on input field
$('input').click(function(){
$(this).val('');
});
答案 0 :(得分:2)
仅更改您的js代码
方法1
...
// generate rows
$('input').keyup(function(){
// Clean table
$('table tbody tr').remove();
// Add new rows
var rowCount = $('table > tbody tr').length + 1;
for(var i = 1; i <= $(this).val(); i++ ){
$('tbody').append('<tr><td>item'+ i +'</td><td>items</td><td>items</td><td>items</td><td>items</td></tr>');
}
// Then stop previous anim with clean anim queue (added by every key typed in input) and finally add new anim
$('tbody').stop(true, false).animate({
scrollTop: $('tbody').get(0).scrollHeight}, 2000);
});
});
...
方法2
...
// generate rows
$('input').keyup(function(){
$('table tbody tr').remove();
var rowCount = $('table > tbody tr').length + 1;
for(var i = 1; i <= $(this).val(); i++ ){
$('tbody').append('<tr><td>item'+ i +'</td><td>items</td><td>items</td><td>items</td><td>items</td></tr>');
// Animate during row adding
$('tbody').stop().animate({scrollTop: $('tbody').get(0).scrollHeight}, 2000);
}
});
答案 1 :(得分:0)
找到答案。
setTimeout(function(){
$('tbody').animate({
scrollTop: $('tbody').get(0).scrollHeight}, 2000);
}, 500);