禁用所有单击事件,直到ajax请求完成

时间:2014-07-06 09:48:43

标签: javascript jquery ajax event-handling

所以我有一个这样的列表页面:

//start loop
<div id ='row-prd-<number>'>
  <strong>product Name</strong>
  <a href='#' id='edit-prd-<number>'>Edit</a>
  <a href='#' id='delete-prd-<number>'>Delete</a>
</div>
//end loop

在我的javascript中,我做了类似的事情:

$('#delete-prd-<number>').click()
{
   //change style of the row to show its being deleted..
   $('row-prd-<number>').addClass('deleting');

   //make ajax call to delete
   ajaxDeleteRecord(prd-<number>);
}

现在,这很好用。我担心的是,在较低的连接速度情况下,删除ajax调用需要几秒钟才能完成。我担心如果用户点击另一条记录的编辑或删除按钮会发生什么。所以我有三个问题:

1。我应该禁用页面上的所有点击事件,直到ajax调用返回? 对我来说,这似乎不是一个好选择 - 假设ajax调用错误...在这种情况下,用户现在处于他/她不能再点击页面中的任何内容的状态!

2。那怎么办呢? ......我有点迷失了该做什么。我想这是我遇到的三个问题中最重要的一个。

1。如果我必须禁用并重新启用页面上元素的点击(编辑/删除/新),是否有一种简单的方法可以做到这一点? ......只是好奇......

1 个答案:

答案 0 :(得分:-1)

您的方案1将执行此操作以禁用所有其他事件。它也会很整洁。

您可以通过设置

让ajax调用同步而不是异步
async:false

在电话中。

语法看起来像这样:

$.ajax({
        url: 'your url',
        global: false,
        type: 'POST',
        data: {},
        async: false,
        success: function() {},
        error: function() {}
    });