2016-08-05 144 views
0

所以我在这个问题上看到了一些问题,但没有一个适用于我的情况。作为一个例子,我有一个网页有多个Javascript文件,将处理程序附加到页面上的控件 - 一些控件可以有不同JS文件的多个处理程序,例如,下拉列表有2个更改事件。问题是第二个更改函数在第一个更改事件的AJAX请求完成之前运行。JQuery停止/开始传播

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

async: false 

在ajax请求,但已被弃用。

我的希望是,在第一个变化事件,呼吁

event.stopImmediatePropagation() 

,然后重新启动它再升Ajax请求运行之后。据我所知,这不是一个选项。

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

因此:

有什么办法可以暂停传播吗?

是否有任何方法来存储控件的事件处理程序,然后触发它们?

谢谢。

回答

0

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

此方法不接受任何参数。

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

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

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

示例:在点击事件中消除冒泡。

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