我有一个图像列表,可以通过ajax加载更多内容。默认情况下,图像会加载到列表中。当用户滚动时,另外4个项目被添加到列表中。该列表每15秒通过ajax刷新一次,只替换列表中的前7项。问题是当4个新项目添加到列表中时,选择器似乎忽略这些项目,因此它不会从0索引中进行选择。
我知道这听起来很混乱所以我会尝试用一个简单的例子演示。
实施例
$(function () {
// Update ChannelStats
setTimeout(function () {
var refresh = setInterval(UpdateChannels, 15000);
UpdateChannels();
}, 15000);
function UpdateChannels() {
$.ajax({
type: "POST",
url: "ajax/ImageList.aspx/UpdateImages",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
// Newest
var $newestResults = $('#newest .pcVideomaincontainer:lt(7)');
$newestResults.fadeOut('slow'), function () {
remove()
};
$.each($newestResults, function (index, value) {
$(this).delay(index * 250).animate({
opacity: 0
}, 250,
function () {
$(this).remove();
$('#pcContentHolder_newest').append(data.d.Newest.HtmlChannelSegments[index]);
});
});
});
}
});
[注意数字的顺序 - 这是图片加载的顺序]
在初始页面加载时,第一张图像被加载
1。在初始页面上加载以下图像
1 2 3 4 5 6 7
2. 当用户滚动时,剩余的图像会显示
1 2 3 4 5 6 7 8 9 10 11
3. 更新脚本第一次运行
8 9 10 11 1 2 3 4 5 6 7
4. 更新脚本第二次运行
4 5 6 7 1 2 3 4 5 6 7
5. 更新脚本每次运行后,订单都是
4 5 6 7 1 2 3 4 5 6 7
据我所知,这4个新添加的元素不包括在内
$('#newest .pcVideomaincontainer:lt(7)')
选择。我不确定如何在这种情况下使用“实时”,或者是否有其他技术。
答案 0 :(得分:0)
我不确定这是否是您的主要问题,但是您的代码的这一部分在$(this).
之前缺少remove()
并且还缺少结束语。你有这个:
var $newestResults = $('#newest .pcVideomaincontainer:lt(7)');
$newestResults.fadeOut('slow'), function () {
remove()
};
应该是这样的:
var $newestResults = $('#newest .pcVideomaincontainer:lt(7)');
$newestResults.fadeOut('slow'), function () {
$(this).remove()
});
一旦你解决了这个问题,$ newestResults DOM对象都将被删除,所以我不确定你为什么再尝试用以下几行代码对它们进行操作。
答案 1 :(得分:0)
我从追加变为前置,现在可以正常工作。