jQuery showAllComments toggle - 使用true / false变量

时间:2013-04-15 14:55:50

标签: jquery ajax variables

您好我有一个评论系统,它最多可以加载10条评论。 我使用JQuery AJAX帖子发送输入的数据,然后获取结果。

现在我已经添加了一个按钮来加载所有消息,该按钮将发送另一个POST,该帖子将导致PHP中的一个函数加载所有结果而不包含 LIMIT 10.

一切都很棒,但我的问题很小。

如果我点击加载所有消息按钮,它将添加所有消息+不删除其他10消息。

这是简易修复,我只是在处理时删除另一个。 但是当我点击加载所有消息按钮时,它将不会显示所有消息,它将再次显示10。

这是因为javascript一遍又一遍地执行加载消息流程。

因此我需要做这样的事情:

if (loadAll == false) {
     load10 messages
} else {
     load all messages
}

但我的问题是:

我该怎么做?我必须将函数loadAll定义为false(默认值),然后我可以这样做:

$("#loadall").click(function() {
     loadAll = true;
});

在此之前,我可以补充一下:

var loadAll = true; 

或只是

 loadAll = true;

但是当javascript处理时,loadAll = false的定义将在您单击该链接后覆盖true,因此所有注释都不会加载..

问题

如何在点击$(“#loadall”)时不使用TRUE覆盖FALSE。click()? 那么它会删除10条评论,然后加载所有评论吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用另一个显示

的变量
var loadingData = false;

在执行ajax请求时将变量修改为true。 请求完成后,将其移回false。 在执行ajax请求之前,当您开始获取数据时检查这两个变量。

编辑:

var loadingData = false;
var loadAll = false;

function loadMessageFunc{
    if(!loadAll && !loadingData) {
        loadingData = true;
        //Get Data Here
        //On Result
        ...
        loadingData = false;
    }
}

function loadAllFunc{
    if(!loadingData) {
         loadAll = true;
         loadingData = true;
         //Get All Data Here
         //On Result
         ...
         loadAll = true; //If you want to stop load message calls after one load all call
         loadingData = false;
    }
}

这将确保两者不会同时被调用。您可以相应地清除/加载数据。