Rebind dymanically created forms после jQuery ajax response

Я новичок в jQuery, но понимаю его по большей части. Моя проблема заключается в том, что когда мой вызов ajax, который обновляет весь div, выполняется, все мои динамически созданные формы не работают. Если вы попытаетесь отправить их, событие не будет работать должным образом и просто попытается подать обычную форму. У меня есть все другие элементы, такие как ссылки, связанные с использованием .live (), которые, похоже, отлично работают. Только форма умирает. Как восстановить динамически созданные формы после вызова ajax? Все они имеют идентификатор formname_id. Я попытался использовать bind, но он не работает, как показано ниже. Любая помощь приветствуется.

Вот код

jQuery(document).ready(function(){ jQuery("form[id^='commentform_']").each(function(){ var id = parseInt(this.id.replace("commentform_", "")); jQuery(this).bind('submit', function(e) { var action = jQuery('#action_' + id).attr('value'); var act_id = ('1'); jQuery.ajax({ type: "POST", url: "ajax/modify.php", data: "action="+ action +"& act_id="+ act_id, success: function(response){ jQuery('#CommentsContainer_' + id).html(response); jQuery('#commentform_' + id)[0].reset(); } }); return false; }); }); 

});

Related of "Rebind dymanically created forms после jQuery ajax response"

Попробуйте сделать что-то вроде этого:

 jQuery("form[id^='commentform_']").live('submit',function(){ var id = parseInt(this.id.replace("commentform_", "")); var action = jQuery('#action_' + id).attr('value'); var act_id = ('1'); jQuery.ajax({ type: "POST", url: "ajax/modify.php", data: {"action": action, "act_id": act_id}, success: function(response){ jQuery('#CommentsContainer_' + id).html(response); jQuery('#commentform_' + id)[0].reset(); } }); return false; }); 

Нет необходимости перебирать формы для привязки к ним. Если вы можете использовать делегат вместо того, чтобы жить, сделайте это.

Почему бы вам не перебросить нормальную форму submit:

  function addNewitem() { $('#new_item_form').submit(function() { $.get("includes/ItemEdit.php", { newItem: true }, function(msg) { isNewItem = true; $("#new_item").hide(); $('#item_list').hide(); $("#item_edit").html( msg ); $("#item_edit").show(); editActiveEvent(); }); return false; }); } 

Не забудьте вернуть false. или выполните .preventDefault

Я получил это, чтобы добавить событие в вызов функции и использовать event.preventDefault (); НО, конечно, только в FF. Не работает в IE7 ..

 jQuery("form[id^='commentform_']").live('submit',function(event){ var id = parseInt(this.id.replace("commentform_", "")); var action = jQuery('#action_' + id).attr('value'); var act_id = ('1'); jQuery.ajax({ type: "POST", url: "ajax/modify.php", data: {"action": action, "act_id": act_id}, success: function(response){ jQuery('#CommentsContainer_' + id).html(response); jQuery('#commentform_' + id)[0].reset(); } }); event.preventDefault();}); 

Но IE7 все еще пытается угасить действие. arrgggh .. Все, что я делаю неправильно ???