2009-08-11 38 views
0

请看看这段代码 -如何从动态html结果执行javascript函数? jquery

当我点击myLink时,我得到一个模态对话窗口,显示如下定义的html。这个html包含一个按钮(id = test_button),当我点击这个按钮时,我想要做一个ajax请求。 但它不工作。所以要测试它,我只是在做一个警报,但它不会工作。

也可以从test_button点击函数中更新现有的dom元素值(只填充表单)。

感谢您的帮助。

$('#myLink').click(function(event) { 
    event.preventDefault(); 
    $('<div id="iContainer">Test: <input type="text" value="" id="test_text" /> 
     <input type="button" id="test_button" value="click" /></div>').appendTo('body');   
    $("#iContainer").dialog({     
     width: 600, 
     modal: true, 
     close: function(event, ui) { 
      $("#iContainer").remove(); 
      } 
     }); 
    }); 
    $('#test_button').click(function() { 
     alert('I am in Alert'); 
     //alert($('#test_text').val()); 
    }); 

回答

2

尝试用Events/live

$('#test_button').live("click", function(){ 
    alert('test'); 
}); 
+0

辉煌..作品..让我再试一次。谢谢 – TigerTiger 2009-08-11 15:07:34

1

的问题是,你正在试图元素存在之前附上点击处理程序。

正如CMS规定,您可以使用.live(),或者你可以在你的$( '#myLink的')添加单击处理程序点击()函数

像这样:

$('#myLink').click(function(event) { 
     event.preventDefault(); 
     $('<div id="iContainer">Test: <input type="text" value="" id="test_text" /> 
       <input type="button" id="test_button" value="click" /></div>').appendTo('body');     
     $("#iContainer").dialog({          
       width: 600, 
       modal: true, 
       close: function(event, ui) { 
         $("#iContainer").remove(); 
         } 
       }); 

     $('#test_button').click(function() { 
       alert('I am in Alert'); 
       //alert($('#test_text').val()); 
     }); 
}); 
+0

如何将它添加到$('#myLink')。click()??谢谢。 – TigerTiger 2009-08-11 15:06:58

+0

请参阅答案中的代码,我只是拖动结束大括号,并放下$('#test_button')。click(..)代码。请注意,我会考虑将这些内容分离为更加模块化的内容,但这种或CMS的解决方案将帮助您启动并运行。 – Marc 2009-08-11 15:09:06

+0

是的,检查它。 – TigerTiger 2009-08-11 15:10:34