我有一个jquery函数,当用户每次在下面滚动时加载更多帖子
这是jquery代码
$(function() {
var $timeline = $('#tupdate'),
$spinner = $('#loading').hide();
function loadMore() {
$(window).unbind('scroll.posts');
$spinner.show();
$.ajax({
url: "/ajax/loadmore?lastPost=" + $(".pointer:last").attr('id'),
success: function(html) {
if (html) {
$timeline.append(html);
$spinner.hide();
} else {
$spinner.hide();
bootbox.alert('No more post available');
}
$(window).bind('scroll.posts', scrollEvent);
}
});
}
//lastAddedLiveFunc();
$(window).bind('scroll.posts', scrollEvent);
function scrollEvent() {
var wintop = $(window).scrollTop(),
docheight = $(document).height(),
winheight = $(window).height();
var scrolltrigger = 0.95;
if ((wintop / (docheight - winheight)) > scrolltrigger) loadMore();
}
});
现在的问题是,每当用户向下滚动弹出窗口时,每次都会激怒用户,我该如何只提醒一次?
这是我尝试的内容
if (!g) {
var g = 1;
bootbox.alert('No more Post');
}
但每当我瘫痪时,它仍会保持警惕
答案 0 :(得分:1)
您正在使用回调内部的范围初始化一个新变量,该值不能在下一个回调中获得,因此请更新全局变量。最好使用布尔值而不是数字。
if(!g){
g = true;
bootbox.alert('No more Post');
}
答案 1 :(得分:0)
您必须在g
之外声明$(function(){
才能使其成为全球性的。
所以你的代码看起来像这样:
var g = false;
$(function() {
var $timeline = $('#tupdate'),
$spinner = $('#loading').hide();
function loadMore() {
$(window).unbind('scroll.posts');
$spinner.show();
$.ajax({
url: "/ajax/loadmore?lastPost=" + $(".pointer:last").attr('id'),
success: function(html) {
if (html) {
$timeline.append(html);
$spinner.hide();
} else {
$spinner.hide();
if (!g) {
bootbox.alert('No more post available');
}
}
$(window).bind('scroll.posts', scrollEvent);
}
});
}
//lastAddedLiveFunc();
$(window).bind('scroll.posts', scrollEvent);
function scrollEvent() {
var wintop = $(window).scrollTop(),
docheight = $(document).height(),
winheight = $(window).height();
var scrolltrigger = 0.95;
if ((wintop / (docheight - winheight)) > scrolltrigger) loadMore();
}
});
答案 2 :(得分:0)
您在范围内声明g
。为了便于阅读,我已将其重命名为showAlert
。
// Declare outside of `loadMore()`.
var showAlert = true; // True by default.
function loadMore(){
$(window).unbind('scroll.posts');
$spinner.show();
$.ajax({
url: "/ajax/loadmore?lastPost="+ $(".pointer:last").attr('id'),
success: function(html){
if(html){
$timeline.append(html);
$spinner.hide();
}else{
$spinner.hide();
if (showAlert)
{
bootbox.alert('No more post available');
showAlert = false; // don't show no more.
}
}
$(window).bind('scroll.posts',scrollEvent);
}
});
}
答案 3 :(得分:0)
从
中删除var
if(!g){
g =1;
bootbox.alert('No more Post');
}
因此g将作为全局变量工作。