j查询条件队列事件

jQuery conditional queue events

本文关键字:事件 队列 条件 查询      更新时间:2023-09-26

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

这很好用。问题是现在我想"链接"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;
        }
    );
}