所以我在这个问题上看到了一些问题,但没有一个问题适用于我的情况。
作为一个例子,我有一个网页,其中有多个Javascript文件将处理程序附加到页面上的控件 - 一些控件可以有来自不同JS文件的多个处理程序,例如:下拉列表包含2个更改事件。问题是第二个更改函数在第一个更改事件的AJAX请求完成之前运行。
我需要做的是在第一个更改事件上运行ajax请求,如果成功,则运行第二个事件。过去我可以使用
async: false
在ajax请求中但已被弃用。
我希望在第一次更换活动时,致电
event.stopImmediatePropagation()
然后在ajax请求运行后再次启动它。据我所知,这不是一个选择。
然后我尝试在运行AJAX之前停止第一次更改的传播,并尝试在运行AJAX之后触发更改事件,但是会导致无限循环。
所以:
有没有办法暂停传播?
有没有办法为控件存储事件处理程序,然后再触发它们?
感谢。
答案 0 :(得分:0)
event.stopPropagation()防止事件冒泡DOM树,防止任何父处理程序被通知事件。
此方法不接受任何参数。
我们可以使用event.isPropagationStopped()来确定是否曾调用此方法(在该事件对象上)。
此方法适用于使用trigger()触发的自定义事件。
请注意,这不会阻止同一元素上的其他处理程序运行。
示例:终止点击事件上的冒泡。
$( "p" ).click(function( event ) {
event.stopPropagation();
// Do something
});