2016-08-05 134 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 
});