2014-04-30 69 views
0

我有2個函數,第一個調用表單,第二個通過ajax提交該表單。 Hovewer我無法將提交事件綁定到新創建的表單,爲什麼這樣呢?將事件綁定到動態生成的表單

獲取形式

$("#discount").click(function(){ 
$.ajax({url:"index.php?module=products&view=addajax",success:function(result){ 
    $(".forma").html(result); 
}}); 
}); 

通過Ajax

$('#my_form').on('submit', (function(evnt){ 
    evnt.preventDefault(); //Avoid that the event 'submit' continues with its normal execution, so that, we avoid to reload the whole page 
    data = $("form#my_form").serialize(); 
    $.post('index.php/products/adds', 
    $("form#my_form").serialize(), //Serialize all the content of our form to URL format 
    function (data) { 
     $('div#sending_form').prepend(data); //Add the AJAX response to some div that is going to show the message 
    }) 
})); 

回答

1

提交此表不能直接綁定到當前不存在元素的事件。要做到這一點,你需要使用delegated events

例如:

$('.forma').on('submit', 'form', function(evnt){ 
    //submit 
}); 
1

嘗試使用on()與語法如下:

$("body").on("submit", "#my_form", function() { 
    // your code 
}); 
1

如果已動態添加到頁面,那麼你就不會能夠將點擊事件綁定到它。而是使用on()綁定一個事件從頁面上的現有元素新創建的任何子女(即有當DOM負載)

您的新的(),點擊事件將是這個樣子:

$('.forma').on('click','form', function(e) { 
    // logic here 
}); 

.forma是DOM加載時存在的元素的類。

又如:

如果您已經添加<li> s到使用jQuery一個<ul>,那麼你可以點擊事件的每<li>內像這樣分配給超鏈接:

$('ul.testClass').on('click','li a', function(e) { 
    e.preventDefault(); 
    // custom hyperlink behaviour here 
}); 

更多信息on() here:https://api.jquery.com/on/

相關問題