2012-08-14 54 views
0

我有我使用的是上的彈出按鈕一個javascript鏈接:多個.click()綁定。我如何強制一個綁定最後執行?

<a href="#" class="submit-action close-modal">Submit</a> 

「提交行動」類有一個jQuery。點擊()上綁定執行.submit()形式嵌入在模態中。 「close-modal」類有一個.click()綁定關閉模式。

$(".submit-action").click(function() ($("#someForm").attr("action", "someURL"); 
$("#someForm").submit(); 

this.close = function() { 
    $("#modal").hide(); 
    $.unblockUI(); 
}; 

$(".close-modal").click(function()(this.close); 

目前,當我點擊這個按鈕時,關閉模式綁定似乎是先執行並關閉模式,然後再提交表單。所以彈出窗口關閉而不執行提交。有沒有一種方法可以強制「submit-action」綁定在不結合兩個.click()綁定的情況下先執行?

+1

請發送js碼請 – PaperThick 2012-08-14 14:43:53

+0

您不能。事件處理程序不是以可靠的跨瀏覽器順序觸發的。確保一件事發生在另一件事之後的唯一方法是利用您使用的任何第三方庫爲該處理程序提供的回調。如果他們沒有建立回調,那麼你就無能爲力(除了找到一個實際設計好的替代品)。 – 2012-08-14 14:48:39

+0

可能重複的[如何訂購事件與jquery綁定](http://stackoverflow.com/questions/290254/how-to-order-events-bound-with-jquery) – mkoryak 2012-08-14 14:49:45

回答

3

他們開火,在它們所連接的順序,所以你綁定後綁定接近模態提交行動,它應該按照你想要的順序進行。

小提琴1:http://jsfiddle.net/johnkoer/2xNwn/1/

小提琴2:http://jsfiddle.net/johnkoer/2xNwn/2/

從jQuery documentation(重點煤礦):

默認情況下,大多數事件冒泡從原始事件目標 的文檔元素。在沿途的每個元素上,jQuery調用已附加的匹配事件處理函數的任何 。通過調用 event.stopPropagation(),處理程序可以防止事件進一步冒泡文檔樹(從而阻止 處理這些元素的處理程序)。然而,附加在當前 元素上的任何其他處理程序都將運行。爲了防止這種情況,請致電 event.stopImmediatePropagation()。 (綁定到一個元素 調用事件處理程序以相同的順序,他們的約束。

+0

我切換命令我綁定兩個它完美的工作。謝謝。 – user886596 2012-08-14 14:58:21

1

只要有一個在另一個上面就會導致這樣的情況發生第一:

jsFiddle DEMO

$(document).on('click', '.submit-action', function() { 
    alert('submit-action click'); 
}); 


$(document).on('click', '.close-modal', function() { 
    alert('close-modal click'); 
}); 
0

如果你想關閉提交完成後,剛模態。觸發該動作以關閉ajax的「完整」事件的模態。