on.blur和on.click在ajax之前触发?

时间:2016-11-29 06:45:46

标签: javascript jquery ajax events

我有两个事件,第二个触发Ajax调用。 (单击会在<td>中创建一个输入,之后会被成功事件覆盖 - 因此模糊的输入是正确的)

$(document).on("click","#"+table_id+" td",function(e)

$(document).on("blur","#"+table_id+" td input",function(e)
  ajax(ajaxStatements,"update");

如果我点击<td>,然后点击一个空白区域,则如下所示:

点击事件-----------
BLUR EVENT #######
AJAX EVENT +++++++++++++++++

如果我点击<td>,然后再点击另一个<td>,那么它就无法正常运作。

点击事件-----------
BLUR EVENT #######
AJAX EVENT +++++++ 点击活动-----------

这就是我想要的。 然后 - 这就是问题 - 响应变化并执行此操作:

点击事件-----------
BLUR EVENT #######
点击事件-----------
AJAX EVENT +++++++++++++++++

为什么即使调用blur事件,新的click-event也会在ajax调用之前触发?

2 个答案:

答案 0 :(得分:0)

因为AJAX是异步的,所以您的请求和点击事件会同时触发。

试试这个:

$.ajax({
 async:false,
})

答案 1 :(得分:0)

这是因为您的异步ajax()请求并不等待ajax()完成。因此,如果你想保持这个过程直到ajax没有完成,试试这个:

$.ajax({
   async:false,
});

Ajax Doc