Javascript jQuery条件队列事件

Javascript jQuery条件队列事件,javascript,jquery,events,queue,synchronize,Javascript,Jquery,Events,Queue,Synchronize,我有两个函数(“编辑”和“保存”),它们是分别绑定到单击和模糊表单元格事件的事件处理程序。 基本上,“编辑”将单元格的内容替换为具有相同内容的输入,而save则相反,两者都使用一些ajax调用来更新数据库 那很好用。问题是,现在我想“链接”2个单元格,所以当我更改第一个单元格的值时,第二个单元格将根据第一个单元格的值进行更新 这几乎是可行的,除了一种情况:假设我编辑单元格#1,对值进行一些更改,然后单击第二个单元格。 所发生的事情是在单元格1上触发模糊事件,调用“保存”函数,使用新值使第一个单元

我有两个函数(“编辑”和“保存”),它们是分别绑定到单击和模糊表单元格事件的事件处理程序。 基本上,“编辑”将单元格的内容替换为具有相同内容的输入,而save则相反,两者都使用一些ajax调用来更新数据库

那很好用。问题是,现在我想“链接”2个单元格,所以当我更改第一个单元格的值时,第二个单元格将根据第一个单元格的值进行更新

这几乎是可行的,除了一种情况:假设我编辑单元格#1,对值进行一些更改,然后单击第二个单元格。 所发生的事情是在单元格1上触发模糊事件,调用“保存”函数,使用新值使第一个单元格返回到正常状态,并更改单元格2的值

但单击事件也会在单元格2上触发,因为我刚刚单击了它,所以在“保存”完成并对单元格2进行更改之前,会调用“编辑”并开始处理

我想要的是,单元格2上的“编辑”在开始之前等待保存完成,这样它就会有正确的值

我读了一些关于在JS中同步事件的内容等。。。但到目前为止,我还没有成功地将其应用于我的问题

有人能帮我吗


谢谢

对于每一个“编辑”操作,您可能应该应用一个先决条件,要求以前的“保存”操作(如果有)完成

例如:

$('...').click(function() {

    // precondition
    if(saveInProgress) return false;

    // .. you code to switch to edit mode ...

});

$('...').blur(function() {

    // precondition
    if(saveInProgress) return false;

    // AJAX call for saving
    doSave();

});

var saveInProgress = false;
function doSave() {

    saveInProgress = true;
    $.ajax(...,
        success: function() {
            // ... your code ...
            saveInProgress = false;
        },
        error: function() {
            // ... your code ...
            saveInProgress = false;
        }
    );
}

对于每一个“编辑”操作,您可能应该应用一个前提条件,强制要求前一个“保存”操作(如果有)完成

例如:

$('...').click(function() {

    // precondition
    if(saveInProgress) return false;

    // .. you code to switch to edit mode ...

});

$('...').blur(function() {

    // precondition
    if(saveInProgress) return false;

    // AJAX call for saving
    doSave();

});

var saveInProgress = false;
function doSave() {

    saveInProgress = true;
    $.ajax(...,
        success: function() {
            // ... your code ...
            saveInProgress = false;
        },
        error: function() {
            // ... your code ...
            saveInProgress = false;
        }
    );
}

发布一些代码以便我们能更好地看到问题发布一些代码以便我们能更好地看到问题这很有效谢谢!)我以为不会调用单元格2的编辑函数,因为saveInProgress为true,所以我必须“等待”saveInProgress为false,然后再次单击,但似乎我错了。Js可能比我快多了:)这很有效,谢谢!:)我以为不会调用单元格2的编辑函数,因为saveInProgress为true,所以我必须“等待”saveInProgress为false,然后再次单击,但似乎我错了。Js可能比我快得多:)