2009-11-17 64 views
1

我有以下問題/疑問,希望有人能幫助我。 假設我在加載頁面時有幾個JavaScript事件正在初始化。在這個頁面中,我允許用戶點擊幾個動作按鈕(有這些事件)。現在,在這種情況下,其中一個按鈕使ajax調用,其中一個成功的結果將使該按鈕消失,並使另一個按鈕出現(我從ajax響應注入此html)。在這一刻我想添加一個事件到這個新的按鈕,所以在我注入html後,我這樣做了。當我點擊這個按鈕時,我希望第一個按鈕再次出現,而這個按鈕會消失。現在這個新按鈕(在開始的那個按鈕)必須再次有同樣的事件!我是否需要再次初始化該事件?是不是有辦法讓這種自動化方式成爲可能?我的意思是,如果我爲某個div的所有人開了幾個事件,並且在該div中加載了另一個Ajax,那麼不應該對同一事件立即做出迴應嗎? 謝謝ajax調用後重新初始化dom事件

回答

1

jQuery有一個實時事件註冊功能,它可以保持事件對所有當前和未來匹配的選擇器都是正確的。 (jQuery.com

至於簡單的Javascript,是的,您需要重新註冊該事件。

+1

修改爲jQuery的1.7,它取代.live()用。對() – Kzqai 2012-07-27 22:34:25

1

如果您只是隱藏原始按鈕(例如display:none),那麼您在開始時附加到它的所有事件仍然會在那裏。

在初始頁面加載後創建的新按鈕(例如,通過從Ajax請求中添加它們)將需要在DOM中安全地附加事件。

jQuery有一個自動執行此功能的功能,它稱爲live。這可以讓你指定一個選擇器,並且會不斷監視它。一旦新對象出現在與原始選擇器匹配的DOM中,事件也將附加到它。

進行實時文檔可以在這裏看到:http://docs.jquery.com/Events/live

+0

改性爲jQuery的1.7,它取代.live()用。對(中) – Kzqai 2012-07-27 22:34:35