2013-05-07 32 views
1

我有一個聯繫表單,當提交時將通過ajax進行處理。然後,當發送消息時,ajax回調函數會在窗體之前的同一個div內帶來一個新文件,即thank-you.php,而不是表單。如何選擇通過ajax帶入的元素

謝謝文件還將包含驗證任何不正確完成的字段屬性(服務器端驗證)。問題是,如果有任何驗證錯誤,我希望訪問者點擊回的形式,讓我有一個鏈接

<a id="contact_back" href="#">Go back to contact form</a> 

其中的onclick我想用帶回的形式。但我無法選擇它。我嘗試過live(),但沒有奏效,我也不想使用它。我寧願使用on()API。

$("#contact_back").on("click", function(){ 
    alert('works'); 
}); 

但仍然未能被選中。 那麼你如何選擇通過ajax或即時進入的元素?

回答

2

如果對象不在DOM存在,事件需要委託:

$("body").on("click", "#contact_back", function(){ 
    alert('works'); 
}); 
+0

哇,這很好!那麼ajax代碼不會進入DOM?這基本上是將#contact_back附加到DOM上嗎? – Source 2013-05-07 22:24:30

+0

您可以隨時使用ajax或其他任何方式更新DOM,但如果該元素不存在,現代版本的jQuery允許您綁定和委派未來事件。事實上,我認爲這是目前唯一真正的做法。 .on已被棄用。從本質上講,jQuery創建事件並保持它的id,以便將來在實際顯示在DOM中時使用。 – 4m1r 2013-05-07 22:33:17

+0

.on已棄用?我認爲綁定和生活被棄用,而且是替代? – Source 2013-05-07 22:57:36

0

使用事件代表團 - 動態創建的元素的

$(document).on("click","#contact_back", function(){ 
    alert('works'); 
}); 

http://api.jquery.com/on/

0

使用.delegate()

jQuery doc

附加一個處理程序,以一個或多個事件的 選擇,現在還是將來匹配,基於一組特定的根元素 的所有元素。

希望這會有所幫助!

相關問題