2009-08-05 62 views
1

我有一个HTML文档,用jQuery代码变化不会触发事件在AJAX加载的形式

$(function(){ 
[...] 
    $("#newNotice").click(function(){ 
     $("#properties").load("testDiagramm.html #NoticeForm"); 
     return false; 
     }); 
    function showFormValues(){ 
     var s = $("form").serialize(); 
     [... Do things ...] 
    } 
    $("input, textarea").change(showFormValues); 
    }); 

起初存在HTML文档中没有的形式。但我加载不同的表单到文档中。其中一个请求你可以在这里看到

$("#properties").load("testDiagramm.html #NoticeForm"); 

问题是。即代码行

$("input, textarea").change(showFormValues); 

只有在表单被加载时才会触发。如果我想要执行showFormValues()函数时,我必须做什么,当我在公式中更改某些内容时,我稍后加载该内容?

非常感谢您的回答。

拉拉

回答

3

你的窗体失去它通过AJAX重装后,那么事件处理程序之前绑定到获得注入的页面都将丢失的元素的结合到DOM。

我通常会建议使用事件代表团live,但它不支持改变事件,所以一个安全的赌注是使用一个回调作为第二个参数到$ .load功能重新绑定:

$(function(){ 
[...] 
    $("#newNotice").click(function(){ 
     $("#properties").load("testDiagramm.html #NoticeForm", function() { 
      $("input, textarea").change(showFormValues); 
     }); 
     return false; 
     }); 
    function showFormValues(){ 
     var s = $("form").serialize(); 
     [... Do things ...] 
    } 
    $("input, textarea").change(showFormValues); 
    });