我正在创建一个自动滚动,自动更新表,需要从某个点搜索一个类的元素。 我的代码目前是这样的:
var nextScroll;
setInterval(function() {
if ($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
$('.seen').removeClass('seen');
$('html, body').animate({
scrollTop: 0
}, 2000);
} else {
$('.job-item:not(.seen)').each(function() {
var visible = $(this).visible();
if (!visible) {
nextScroll = $(this).offset().top;
$(this).addClass("current-scroll");
return false;
} else {
$(this).addClass('seen');
}
});
$('html, body').animate({
scrollTop: nextScroll
}, 2000);
}
}, 7000);
setInterval(function() {
$.ajax({
type: 'POST',
url: 'dashboard-table.php',
success: function(msg) {
$("#table-container").html(msg);
console.log("loaded");
}
});
}, 5000);
它基本上使用jquery.visible插件向下滚动到屏幕上没有完全显示的下一个.job-item
。问题是,当页面通过ajax更新时,“看到”的元素会丢失看到的类,这意味着我想存储哪个元素最后可见并从那里搜索行。
除非有人有任何其他选择,否则我将非常感激。
答案 0 :(得分:0)
您可以使用看到的帖子ID填充看到的数组(或jQuery数据或localstorage),然后当您获取数据时应用看到所见元素的类,但重要的是您的行有一个唯一身份或属性。
出于演示目的,我使用了行的假设id,但它可以是一切。
代码:
var seen=[];
你在setTimeout函数中的:
$(this).addClass('seen');
if(seen.indexOf($(this).id) == -1){
seen.push($(this).id);
}
并在您的成功函数中:
success: function(msg) {
$("#table-container").html(tabledata);
$.each(seen, function(i,e){
$('#'+e).addClass('seen');
});
},