2013-03-22 68 views
0

我使用AJAX POST提交了一个使用jQuery的静态表单,它工作得很好。使用AJAX提交动态创建的表单

但是,在调用之后,我用第一个AJAX调用的结果替换了我的表单的内部。之后,再次发布表单将无法工作。但为什么?

这是我的形式:

<form> 
     <div id="optionForm"> 
     Just some SELECT menus 
     </div>   
    </form> 

这是我的发布形式和替换形式的内部(一些选择菜单):

<script> 
    jQuery(document).ready(function() { 
     $("select").change(function() { 
      var data = $('form').serialize(); 
      $.post("/test/Update.do", data, function(data) { 
       $("#optionForm").html(data); 
      }); 
     }); 
    }); 
</script> 
+0

顺便说一句:我宁愿选择用'$(本).closest(“形式”)'(这是选择),而不是仅仅$(“形式”)的形式。如果网页上有多种表单会怎么样? – Simon 2013-03-22 11:19:18

+0

谢谢你的建议,西蒙! – jengooo 2013-03-30 14:25:01

回答

1

这不是从完全清楚你的问题,但我猜你选择的是的形式?

$('select').change只会将更改侦听器绑定到在执行$('select')时发现的元素。当您替换整​​个表单时,您会销毁旧的选择并创建新的选择,但没有绑定任何监听器。使用委派的事件,而不是:

$('#optionForm').on('change', 'select', function() { 
    // post... 
}); 
+0

非常感谢! – jengooo 2013-03-22 11:17:40