后重新绑定jQuery的Ajax响应dymanically创建的窗体(Rebind dymanica

2019-10-21 11:11发布

我有点新的jQuery的,但了解它的大部分。 我的问题是,当我的Ajax调用它刷新整个DIV做,我所有的动态创建的形式不工作。 如果您尝试并提交,事件好好尝试正常工作,只是试图做一个正常的形式提交。 我把所有的其他项目,如使用.live()这似乎工作的伟大捆绑链路。 刚成形模。 如何重新绑定Ajax调用后动态创建的形式? 他们都有formname_id的ID。 我试图使用绑定,但它不如下工作。 任何帮助表示赞赏。

下面是代码

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;
    });
});             

});

Answer 1:

试着做这样的事情:

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;
});

无需遍历所有的形式绑定到他们。 如果您可以使用委托 ,而不是活的这样做。



Answer 2:

你为什么不过乘坐普通表单提交:

    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



Answer 3:

我得到这个工作将在函数调用的事件,并使用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 ..任何事情我做错了?



文章来源: Rebind dymanically created forms after jQuery ajax response