2012-03-23 542 views
10

我有兩種功能掛鉤在窗體的submit事件上。每個功能都在不同的地方,一個功能可能會影響另一個功能。jquery事件的優先級

我該如何強制這些函數中的一個被掛鉤到最低優先級(即被執行的最後一個)?

+3

使用jQuery,事件處理程序按照它們綁定的順序執行。所以把它們按照正確的順序綁定,你很好。 – 2012-03-23 16:55:08

+0

請給我們一些代碼 – Har 2012-03-23 16:55:27

+0

好的,問題是我不希望我的代碼被綁定到這個預定義的順序事物:( – Alex 2012-03-23 17:28:14

回答

7

有四種方法我能想到的:

  1. 自己管理的回調,並且只有一個事件處理函數調用所需順序的功能。

  2. 在應該最後觸發的函數中,在零毫秒超時中執行實際工作。如果所有其他函數同步工作(並且您可以在事件冒泡期間不會發生最後一個函數),那麼這將實現同樣的效果。

  3. 將待解決的最後處理程序綁定到DOM樹中更高的位置。您必須測試是否適用於submit事件;這些事件冒泡在IE中不起作用,但jQuery docs提到這已經在jQuery中被規範化。可能值得一試。

  4. 有點類似於1,當綁定除低優先級之外的任何其他處理程序時,解除綁定後者,綁定新的處理程序,最後重新綁定最後運行的程序。

2

你可以使用的處理程序自定義事件,並有第一個處理程序捕獲提交,以防止它,做它的東西,火爲第二處理該事件,並有第二個不提交