JQuery停止/开始传播

时间:2016-08-05 09:57:20

标签: jquery ajax event-propagation

所以我在这个问题上看到了一些问题,但没有一个问题适用于我的情况。

作为一个例子,我有一个网页,其中有多个Javascript文件将处理程序附加到页面上的控件 - 一些控件可以有来自不同JS文件的多个处理程序,例如:下拉列表包含2个更改事件。问题是第二个更改函数在第一个更改事件的AJAX请求完成之前运行。

我需要做的是在第一个更改事件上运行ajax请求,如果成功,则运行第二个事件。过去我可以使用

async: false

在ajax请求中但已被弃用。

我希望在第一次更换活动时,致电

event.stopImmediatePropagation()

然后在ajax请求运行后再次启动它。据我所知,这不是一个选择。

然后我尝试在运行AJAX之前停止第一次更改的传播,并尝试在运行AJAX之后触发更改事件,但是会导致无限循环。

所以:

有没有办法暂停传播?

有没有办法为控件存储事件处理程序,然后再触发它们?

感谢。

1 个答案:

答案 0 :(得分:0)

event.stopPropagation()防止事件冒泡DOM树,防止任何父处理程序被通知事件。

  

此方法不接受任何参数。

我们可以使用event.isPropagationStopped()来确定是否曾调用此方法(在该事件对象上)。

此方法适用于使用trigger()触发的自定义事件。

请注意,这不会阻止同一元素上的其他处理程序运行。

示例:终止点击事件上的冒泡。

$( "p" ).click(function( event ) {
  event.stopPropagation();
  // Do something
});